html+css+js实现呼吸灯效果

html部分:
<div class="outer"> <div class="inner"> <div class="waimian"> <div class="limian"></div> </div> </div> <div class="text">HI !</div> </div>
css部分:

     * {
      box-sizing: border-box;
    }
    .outer {
      width: 300px;
      height: 500px;
      margin: auto;
      background-color: #000;
    }
    .inner {
      height: 300px;
      width: 300px;
      padding: 60px;
    }
    .waimian {
      height: 100%;
      border-radius: 50%;
      border: 3px solid #fff;
      padding: 30px;
    }
    .limian {
      height: 100%;
      border-radius: 50%;
      border: 10px solid #fff;
    }
    .text {
      width: 300px;
      height: 200px;
      color: #fff;
}  

3.js代码:

    var inner = document.querySelector(".inner");
    var waimian = inner.querySelector(".waimian");
    var limian = waimian.querySelector(".limian");
    console.log(inner, waimian, limian);
    var pad = 30;
    var inpad = 60;
    var flag = true;
    var flagsec = true;
    function padd() {
      if (flag == true && flagsec == true) {
        // inner.style.padding = pad + "px";
        waimian.style.padding = pad + "px";
        pad++;
        if (pad == 50) {
          flag = false;
        }
      } else if (flag == false && flagsec == true) {
        // inner.style.padding = pad + "px";
        waimian.style.padding = pad + "px";
        pad--;
        if (pad == 30) {
          flag = true;
          flagsec = false;
        }
      } else if (flag == true && flagsec == false) {
        waimian.style.padding = pad + "px";
        inner.style.padding = inpad + "px";
        inpad--;
        pad++;
        if (pad == 50) {
          flag = false;
          flagsec = false;
        }
      } else if (flag == false && flagsec == false) {
        waimian.style.padding = pad + "px";
        inner.style.padding = inpad + "px";
        inpad++;
        pad--;
        if (pad == 30) {
          flag = true;
          flagsec = true;
        }
      }
    }
    setInterval(function () {
      padd();
    }, 200);

4.思路:
布局的话:利用怪异盒子的特性;
先设定好父盒子的宽高;(正方形最好)
由于是边框盒子其width值便是content+padding+border;通过一个父盒子的padding值的增减,它的content的宽度便会相对的减与增。同时,将子盒子的高度设置为100%,即和父盒子一样高。所以当父盒子的padding值变化后,
它的content会发生改变,内部的子盒子(也是边框盒子)的width值与height同时发生了改变,便可以做呼吸灯的效果。
js:
var pad = 30;
var inpad = 60;
var flag = true;
var flagsec = true;
将css里边框盒子的padding值设为全局变量;
需要注意的是当外部的圈随着padding改变后,不仅自己的宽高会改变,同时会影响到内部盒子的边框。
所以改变外圈时,为了不影响到内部圈的变化,要给外圈的padding同时做相应的变化,你增我见,你减我增。
设置两个标记值,相当于开关(00,01,10,11)就可以写这个效果了
最后用定时器来安排呼吸灯动起来。
点我查看最后实现的效果

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值