纯CSS制作仿infinity插件风车

2017-01-10  本文已影响0人  Mosnter

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


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>
上一篇下一篇

猜你喜欢

热点阅读