大家好。如何沿着立方体的边缘变换图像?以便它们能够顺利地从一个边缘流到另一个边缘?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Perspective</title>
<style>
body {
margin: 0 auto;
}
.cube-container {
height: 200px;
top: 50%;
left: 50%;
margin-left: -100px;
margin-top: -100px;
perspective: 600px;
perspective-origin: 50% 50%;
position: absolute;
width: 200px;
}
.cube {
height: 100%;
position: absolute;
transform: translateZ(100px);
transform-style: preserve-3d;
width: 100%;
animation: spin 5s linear infinite;
}
.side {
background: transparent;
border: 3px solid grey;
height: 196px;
position: absolute;
width: 196px;
overflow: hidden;
}
.front {
transform: translateZ(100px);
}
.back {
transform: rotateX(180deg) translateZ(100px);
}
.back .img-inner {
width: 100%;
height: 100%;
background-image: url(https://cdn.sportmaster.ru/upload/content/mediahab/prod/0c868511-3fc5-4da6-9092-56235985e840.jpg);
background-position: top;
background-size: 33%;
background-repeat: no-repeat;
}
.left {
transform: rotateY(-90deg) translateZ(100px);
}
.right {
transform: rotateY(90deg) translateZ(100px);
}
.top {
transform: rotateX(90deg) translateZ(100px);
}
.bottom {
transform: rotateX(-90deg) translateZ(100px);
}
.img-inner {
animation: marquee-vertical 5s linear infinite;
}
@keyframes marquee-vertical {
0% {
transform: translateY(0);
}
100% {
transform: translateY(-100%);
}
}
</style>
</head>
<body>
<div class="cube-container">
<div class="cube">
<figure class="side front"></figure>
<figure class="side back">
<div class="img-inner"></div>
<div class="img-inner"></div>
<div class="img-inner"></div>
</figure>
<figure class="side left"></figure>
<figure class="side right"></figure>
<figure class="side top"></figure>
<figure class="side bottom"></figure>
</div>
</div>
</body>
</html>
这是一项相当耗费人力的任务。你需要为立方体的每个面分配一个属性,
overflow:hidden
然后在每个面中放置一张图片,相同或不同,但它们必须都是相同的大小。接下来,除主图像之外的所有其他图像都应相对于视野之外的中心进行移动。比如,transform:translate(-100%, 0)
或者这个领域的一些东西。接下来,挂上一个事件处理程序,用于跟踪光标当前位于立方体的哪个部分。两种状态:1 - 位于其中,2 - 位于其中。然后,这些图片的变换位置会随着时间而同步改变......这样,这两张图片就好像是相互依存的。为了简单起见,我建议您只从两架飞机开始。当你在 2 上实现它时,它将在 6 上起作用......尽管事实上如果你的立方体不旋转,它会更少。
嗯...难道不是吗?
附言我听了老鼠的话只是为了不用猜测哪个角度更直观。
我用图片给每一侧制作了动画,并计算了它们
animation-delay
,并将其设置transform: translateY(100%);
为初始状态顶面是这样的
0s
,背面是这样的1s
,底面是这样的2s
动画现在从
100%
到-400%