炎炎夏日,写个风扇凉快一下

264 阅读2分钟

我正在参加「初夏创意投稿大赛」详情请看:初夏创意投稿大赛

前言

正值夏天,我们来做一个风扇吹吹风吧

代码

正文

我们先用html把风扇的结构弄出来,首先需要的是扇叶,我这里设计了四个,代码如下:

<div class="box">
    <div class="yezi"></div>
    <div class="yezi"></div>
    <div class="yezi"></div>
    <div class="yezi"></div>
</div>

然后给它们增加样式,是利用border来控制形状,就是设置border的宽度,然后把三个border颜色设置为透明,其中一个设置成想要的颜色,这样就形成了梯形(扇叶),然后把每个扇叶都利用transform属性旋转到合适的位置,代码如下:

.yezi{
    width: 100px;
    border: 80px solid #ffb61e;
    border-top-color: transparent;
    border-left-color: transparent;
    border-right: transparent;
    position: absolute;
}
.yezi:nth-child(2){
    transform: rotate(90deg);
    left: 170px;
    top: -10px;
    border-bottom-color: #ff4777;
}
.yezi:nth-child(3){
    transform: rotate(180deg);
        left: 180px;
top: 160px;
    border-bottom-color: #16a951;
}
.yezi:nth-child(4){
    transform: rotate(270deg);
        left: 10px;
top: 170px;
    border-bottom-color: #ff461f;
}

效果图:

image.png

接着我们使用css动画animation试着让它动起来。先定义个动画效果,让整体box从0deg旋转到360deg,代码如下:

@keyframes Dong{
  0%{
    transform: rotate(0deg);
  }
  50%{
    transform: rotate(180deg);
  }
  100%{
    transform: rotate(360deg);
  }
}

然后再box元素加动画属性 animation: Dong 0.1s linear infinite;,让风扇循环转动,这样就可以动起来了。效果图如下(动图跟不上0.0):

1653977444672_.gif

最后我们再把它优化一下,加上档位和杆子:

<div class="gunzi"></div>
<div class="btn-box">
    <div class="btn " data-cl="1">一档</div>
    <div class="btn "  data-cl="2">二档</div>
    <div class="btn "  data-cl="3">三档</div>
    <div class="btn "  data-cl="0">零档</div>
</div>

效果图:

image.png

档位我们设置了3挡,先在css写上每个档位的速度,然后使用js给box动图加上对应的速度类名:

css:

.box.dang1{
    animation: Dong 0.3s linear infinite;
}
.box.dang2{
    animation: Dong 0.1s linear infinite;
}
.box.dang3{
    animation: Dong 0.005s linear infinite;
}

js:

$(".btn").on("click", function() {
    let data = $(this).data("cl");
    $(".box").removeClass("dang1").removeClass("dang2").removeClass("dang3");
    $(".box").addClass("dang" + data);
})

到这里我们的小风扇就完成,来看看效果:

5c98c8d0dfb843abbfafa750e105c68c_tplv-k3u1fbpfcp-watermark.gif