纯CSS制作仿infinity插件风车

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


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图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...
    剑残阅读 9,676评论 0 8
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,796评论 1 92
  • 转载请声明 原文链接地址 关注公众号获取更多资讯 第一部分 HTML 第一章 职业规划和前景 职业方向规划定位...
    前端进阶之旅阅读 16,599评论 32 459
  • 小梅子姐姐:孩子随着年龄的增加,想法越来越多,可是我们总是在无意间去打断孩子的想法,去破坏孩子的想法,很多家长总是...
    小梅子姐姐阅读 453评论 0 1
  • 平球,大臂身体及转体用的少支架稳定,反而拍面比较稳定,方向较固定,用力易集中,好打;而高球,转体仰低头、转体、手臂...
    zhaodongbo阅读 158评论 2 0