小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
我们都知道游乐场里的旋转木马,这篇文章就是用来绘制类似旋转木马动作的。
绘制
多个面围绕一中心进行旋转,就像旋转木🐴一样。
结构
我这里设置了八个面,当然你也可以设置更多的面,可以让它更酷炫点。
<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,三维旋转有三个函数分别对应三个维度的旋转。我们利用景深和旋转可以做出很多炫酷的效果。