css绘制旋转木马

861 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

我们都知道游乐场里的旋转木马,这篇文章就是用来绘制类似旋转木马动作的。

绘制

多个面围绕一中心进行旋转,就像旋转木🐴一样。

结构

我这里设置了八个面,当然你也可以设置更多的面,可以让它更酷炫点。

<div class="eyes">
    <div class="box">
        <div class="reddiv">1</div>
        <div class="bluediv">2</div>
        <div class="pinkdiv">3</div>
        <div class="greendiv">4</div>
        <div class="golddiv">5</div>
        <div class="purplediv">6</div>
        <div class="orangediv">7</div>
        <div class="cyandiv">8</div>
    </div>
</div>

设置样式

同样是利用景深实现3d立体效果,然后加以动画,进行旋转转动。为了便于区分我们,给了每个面不同的颜色。

.eyes{
	perspective: 1200px;
	perspective-origin: 50% 50%;
}
.box{
	transform-style: preserve-3d;
	width:1200px; 
	height: 600px;
	transition: all 10s ease 0.2s;
}
.box div{
	width: 300px;
	height: 200px;
	position: absolute;
	top: 200px;
	left: 450px;
	opacity: 0.8;
	font-size: 30px;
	color: white;
	line-height: 200px;
	text-align: center;
}
.reddiv{
	background-color: red;
	transform: rotateY(-45deg) translateZ(380PX); 
}
.bluediv{
	background-color: blue;
	transform: rotateY(0deg) translateZ(380PX);
}
.pinkdiv{
	background-color: pink;
	transform: rotateY(45deg) translateZ(380PX);
}
.greendiv{
	background-color:green;
	transform: rotateY(90deg) translateZ(380PX);
}
.golddiv{
	background-color: gold;
	transform: rotateY(135deg) translateZ(380PX);
}
.purplediv{
	background-color: purple;
	transform: rotateY(180deg) translateZ(380PX);
}
.orangediv{
	background-color: orange;
	transform: rotateY(-135deg) translateZ(380PX);
}
.cyandiv{
	background-color: cyan;
	transform: rotateY(-90deg) translateZ(380PX);
}
.box:hover{
	transform: rotateY(360deg);
}

总结

我们在平面中使用的旋转只是单纯的让元素在平面旋转一定角度,在三维旋转中稍微要复杂一些,属性当然还是用我们的transform,三维旋转有三个函数分别对应三个维度的旋转。我们利用景深和旋转可以做出很多炫酷的效果。