今天我们依然来做一个比较简单的CSS3动画—五彩风车随风旋转。这个动效和上一篇教程一样,仅使用CSS3完成。我们使用了一些常见的CSS3动画技巧,再加上传统CSS的三角形制作手法,就完成了风车随风旋转的效果:
![dab4c83f9ae5238cbf898cc41f13bce3.png](https://i-blog.csdnimg.cn/blog_migrate/45e0c82d3371937dc3e91d45595a6636.jpeg)
前端代码
HTML代码:
CSS3代码:
#effect-windmill { position: relative; margin: auto; margin-top: 80px; width: 300px; height: 450px;}#effect-windmill > .blade-container { position: absolute; display: flex; flex-flow: column wrap; width: 300px; height: 300px; overflow: hidden; z-index: 20; animation: wind 10s linear 3s infinite; -webkit-animation: wind 10s linear 3s infinite;}#effect-windmill > .blade-container > .blade-item { width: 0; height: 0;}#effect-windmill > .blade-container > .blade-item:nth-child(1) { border-right: 150px solid transparent; border-bottom: 150px solid #e74c3c;}#effect-windmill > .blade-container > .blade-item:nth-child(2) { border-left: 150px solid transparent; border-bottom: 150px solid #e67e22;}#effect-windmill > .blade-container > .blade-item:nth-child(3) { border-right: 150px solid transparent; border-top: 150px solid #f1c40f;}#effect-windmill > .blade-container > .blade-item:nth-child(4) { border-left: 150px solid transparent; border-top: 150px solid #2ecc71;}#effect-windmill > .pole { position: absolute; margin: auto; left: 0; right: 0; bottom: 0; width: 5px; height: 300px; background-color: #3498db; z-index: 10;}@keyframes wind { from { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } to { transform: rotate(-3600deg); -webkit-transform: rotate(-3600deg); -moz-transform: rotate(-3600deg); -ms-transform: rotate(-3600deg); -o-transform: rotate(-3600deg); }}学习Q-q-u-n: 784783012 ,分享学习的方法和需要注意的小细节
知识点提炼
- 风车的旋转效果使用了CSS3中的animate属性,然后配合keyframe改变风车叶片容器的transform属性达到旋转效果,请注意这里旋转的只是风车叶片的外围容器。
- 风车叶片使用了CSS3的flex布局,我们设置flex布局自动换行,这样只需要一组样式就能让四个叶片到达规定位置,省了很多代码。
- 我们给每个叶片单独添加样式时,使用了nth-child伪类选择器,这个选择器最大的好处是,不需要给每个叶片单独定制class,只需要根据自身序号写出样式即可。
- 传统css的三角形制作方法是设置一个宽度很大的border属性,以此来模拟三角形。这里的三角形也是这么做出来的,感兴趣的可以详细了解border制作三角形的方法。