web前端入门到实战:纯CSS3实现旋转风车

作者: 大前端世界 | 来源:发表于2019-12-16 16:33 被阅读0次

    今天我们依然来做一个比较简单的CSS3动画—五彩风车随风旋转。这个动效和上一篇教程一样,仅使用CSS3完成。我们使用了一些常见的CSS3动画技巧,再加上传统CSS的三角形制作手法,就完成了风车随风旋转的效果:

    前端代码

    HTML代码:

            <div id="effect-windmill">
                <div class="blade-container">
                    <div class="blade-item"></div>
                    <div class="blade-item"></div>
                    <div class="blade-item"></div>
                    <div class="blade-item"></div>
                </div>
                <div class="pole"></div>
            </div>
    

    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);
      }
    }
    
    web前端开发学习Q-q-u-n: 731771211,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习方法
    (从零基础开始到前端项目实战教程,学习工具,职业规划 )
    

    知识点提炼

    1. 风车的旋转效果使用了CSS3中的animate属性,然后配合keyframe改变风车叶片容器的transform属性达到旋转效果,请注意这里旋转的只是风车叶片的外围容器。
    2. 风车叶片使用了CSS3的flex布局,我们设置flex布局自动换行,这样只需要一组样式就能让四个叶片到达规定位置,省了很多代码。
    3. 我们给每个叶片单独添加样式时,使用了nth-child伪类选择器,这个选择器最大的好处是,不需要给每个叶片单独定制class,只需要根据自身序号写出样式即可。
    4. 传统css的三角形制作方法是设置一个宽度很大的border属性,以此来模拟三角形。这里的三角形也是这么做出来的,感兴趣的可以详细了解border制作三角形的方法。

    相关文章

      网友评论

        本文标题:web前端入门到实战:纯CSS3实现旋转风车

        本文链接:https://www.haomeiwen.com/subject/gwshnctx.html