CSS旋转木马

635 阅读1分钟

通过CSS技术可以实现将图片旋转,甚至达到类似旋转木马的效果,如下:

先建立六个盒子:
<section> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> </section>

然后再开始对这里六个盒子进行修饰:
因为旋转木马需要用3D效果显示,所以先为body加上perspective:

body { perspective: 1000px; }

再为盒子的父级加上3D效果:

section{ transform-style: preserve-3d; }

先为盒子和其父级加上定位(子绝父相):

section div { position: absolute; top: 0; left: 0; }
section { position: relative; }

再给盒子父级限定长和宽:

section{ width: 208px; height: 146px; }

对盒子的选择,方便起见使用:nth-child(n)

我这个旋转木马的程序选择放六张图片旋转,分析得到六张图片沿Y轴旋转依次增加 60deg 例:

section div:nth-child(3) {
transform: rotateY(120deg) translateZ(300px); background-image: url(material/JZM4.png); width: 100%; height: 100%;
}

我想达到一个六张图片围绕一张图片转的效果,因此在盒子父级里也加入一张图片:

section{ background: url(material/JZM.png) no-repeat; }

最后给六个盒子依次加入不同的图片:

section div:nth-child(3) { background-image: url(material/JZM5.png); }

切记放置图片时先旋转图片再移动:

transform: rotateZ(120deg) translateY(300px);
transform: rotateY(120deg) translateZ(300px);√

现在开始做动画的内容:

设定每一次动画,所有图片旋转 360deg :

@keyframes rotate {

        0% {
            transform: rotateY(0);
        }

        100% {
            transform: rotateY(360deg);
        }
    }

为动画设置相应的属性:

animation: rotate 5s linear infinite;

最后加上一个鼠标指到图片时动画停止的效果:

section:hover { animation-play-state: paused; }

这样一个旋转木马就做好了

以下是效果图:

QQ图片20221204145740.jpg