美文网首页
纯CSS制作仿infinity插件风车

纯CSS制作仿infinity插件风车

作者: Mosnter | 来源:发表于2017-01-10 09:24 被阅读0次

    想起之前朋友给我发的一个图片


    fengche.png

    其实是chrome插件infinity首页右下角的风车

    请允许我安利一波这插件

    忽发奇想能不能用纯CSS做一个出来.. 仔细看了看这风车,好像构造也不算太复杂,于是昨晚就动手了

    先看看最终效果
    传送门(github)

    其实源码大家都可以用F12看到了(代码很烂- -大婶勿喷)..

    下面我就来分析一下制作过程(过程仅供大家参考..因为太烂了..不建议模仿..有更好的代码欢迎交流..)

    首先先做出风车的其中一个扇叶

    QQ截图20170102195947.jpg

    原理其实也很简单,深色部分其实是一个完整的矩形,然后用border-radius把右上角做成圆角的。至于那个有圆角的三角形,其实是用边框做的,当然,还是要用border-radius把角做成有弧度的。
    有兴趣的朋友可以看看这里详解css画一个三角形

    事不宜迟。talk is cheap , show you my code

    *{
        margin: 0;
        padding: 0;
    }
    .tri{
        width: 0;
        height: 0;
        border-width: 142px;
        border-style: solid;
        border-top-left-radius: 109px 122px;
        position: absolute;
        transform: rotate(45deg);
        top: 28px;
        left: 56px;
        border-color: #1ABC9C transparent transparent #1ABC9C;
    }
    .squ{
        position: absolute;
        width: 271px;
        height: 170px;
        border-top-right-radius: 98px 68px;
        background-color: #16A085;
    }
    

    把剩下的三个扇叶做出来

    OK,既然一个扇叶做出来了,其他的也就不成问题了,也就是改一改颜色,每个扇叶用一个div包起来,然后再加上各种位移,将四个扇叶分别放好

    当然咯,少不了我们中间的小圆点(完整代码放最后)

    最后用一个大的div把整个风车包起来,加上旋转的效果,就大功告成了!

    11111111.gif

    (今天刚学了选择器,为了没有太多的冗余代码,css较上面的会稍稍进行处理)

    超级无敌完整代码:

    CSS部分:

    *{
        margin: 0;
        padding: 0;
    }
    .main{
        width: 804px;
        height: 804px;
        animation: roll 1000ms linear infinite;
    }
    @keyframes roll{
        0%{transform: rotate(0deg);}
        100%{transform: rotate(-360deg);}
    }
    .white_circle{
        z-index: 99;
        position: absolute;
        width: 50px;
        height: 50px;
        border-radius: 50px;
        background-color: white;
        margin: 377px 0 0 377px;
    }
    .fla{
        position: absolute;
        width: 402px;
        height: 180px;
    }
    .fla_one{
        transform: rotate(270deg);
        margin:108px 0px 0px 121px;
    }
    .fla_two{
        transform: rotate(180deg);
        margin-top: 389px;
    }
    .fla_three{
        transform: rotate(90deg);
        margin: 511px 0 0 280px;
    }
    .fla_four{
        transform: rotate(360deg);
        margin: 230px 0 0 402px;
    }
    .tri{
        width: 0;
        height: 0;
        border-width: 142px;
        border-style: solid;
        border-top-left-radius: 109px 122px;
        position: absolute;
        transform: rotate(45deg);
        top: 28px;
        left: 56px;
    }
    .tri_one {
        border-color: #F1C40F transparent transparent #F1C40F;
    }
    .tri_two {
        border-color: #EA4C3C transparent transparent #EA4C3C;
    }
    .tri_three {
        border-color: #2ECC71 transparent transparent #2ECC71;
    }
    .tri_four {
        border-color: #1ABC9C transparent transparent #1ABC9C;
    }
    .squ{
        position: absolute;
        width: 271px;
        height: 170px;
        border-top-right-radius: 98px 68px;
    }
    .squ_one{
        background-color: #F39C12;
    }
    .squ_two{
        background-color: #C0392B;
    }
    .squ_three{
        background-color: #27AE60;
    }
    .squ_four{
        background-color: #16A085;
    }
    

    HTML部分:

    <div class="main">
        <div class="white_circle"></div>
        <div class="fla fla_one">
            <div class="squ squ_one"></div>
            <div class="tri tri_one"></div>
        </div>
        <div class="fla fla_two">
            <div class="squ squ_two"></div>
            <div class="tri tri_two"></div>
        </div>
        <div class="fla fla_three">
            <div class="squ squ_three"></div>
            <div class="tri tri_three"></div>
        </div>
        <div class="fla fla_four">
            <div class="squ squ_four"></div>
            <div class="tri tri_four"></div>
        </div>
    </div>
    

    相关文章

      网友评论

          本文标题:纯CSS制作仿infinity插件风车

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