JS动画以及封装
1、定时器动画案例
(1)协议按钮禁止
 var btn = document.querySelector("button")
 var num = 5
    btn.disabled = true
var Timer  = setInterval(function(){
        num--
        btn.innerHTML = "请仔细阅读协议("+num+")"
        if(num ==0){
            clearInterval(Timer)
            btn.innerHTML = "同意"
            btn.disabled = false
        }
    },1000)
案例二 手机短信等待
var btn = document.querySelector("button")
var Timer
btn.onclick = function(){
    var num = 60
    btn.disabled = true
    clearInterval(Timer)
Timer = setInterval(function(){
    num--
    btn.innerHTML = "请"+num+"后重新发送"
    if(num ==0){
        clearInterval(Timer)
        btn.innerHTML = "请重新发送"
        btn.disabled = false
    }
},1000)
}
JS的动画案例
js的动画如何实现
利用js的事件,配合定时器,或者改变它的样式属性,比如颜色,位置等来完成
案例1:物体渐变 (透明度改变)
利用opacity与定时器,注意小数相减的问题
var num = 1
    document.querySelector("div").onclick = function(){
        // 保留this指向
        var that  = this
        var timer = setInterval(function(){
            num -= 0.1
            that.style.opacity = num
        },100)
    }
案例3:物体移动
利用定位或者 margin
 var btn1 = document.getElementById("btn1");
  var box = document.getElementById("box");
  var leftObj = 0;
  function changePosition(step, maxLength, time) {
    var timer = setInterval(function () {
      if (leftObj < maxLength) {
        leftObj += step;
      } else {
        clearInterval(timer);
      }
      box.style.left = leftObj + "px";
    }, time);
  }
  btn1.onclick = function () {
    changePosition(5, 400, 10);
  };
offset client  scroll 系列
(1)offset 系列
offsetLeft:获取元素距离最左边的距离
(1)、如果父元素没有定位,距离浏览器最左侧的距离
(2)、如果父元素有定位,距离父元素最左侧的距离
offsetTop:获取元素距离最上边的距离
(1)、如果父元素没有定位,距离浏览器最上侧的距离
(2)、如果父元素有定位,距离父元素最上侧的距离
(2)scroll系列
scrollTop 和 scrollLeft :获得内容卷曲出去得高度和宽度
scrollWidth和scrollHeight:获得元素的实际宽度和高度,在内容没有超出盒子时,获得的是盒子的内部高度和宽度。内容超出盒子时获得的是内容实际应有的高度和宽度。当盒子内部存在滚动条时,获得的高度和宽度不包括滚动条。
(3).client系列
clientTop 和 clientLeft 获得上边框和左边框得宽度
clientWidth 和 clientHeight 获取可视范围得宽度,高度
轮播图之自动轮播
<style>
        *{
            margin: 0;
            padding: 0;
            list-style: none;
        }
        #bigbox{
            margin: 100px auto;
            width: 400px;
            overflow: hidden;
            height: 300px;
            border: 2px solid red;
            font-size: 0;
        }
        img{
            width: 400px;
            height: 300px;
        }
    </style>
<body>
    <div id="bigbox">
        <div id="box">
            <img src="./image/表情包1.gif" alt="">
            <img src="./image/表情包2.gif" alt="">
            <img src="./image/表情包3.gif" alt="">
            <img src="./image/表情包4.gif" alt="">
        </div>
    </div>
</body>
<script>
    //设置div宽度
    var bigbox = document.getElementById("bigbox")
    var box = document.getElementById("box")
    var imgArr = document.getElementsByTagName("img")
    box.style.width = 400 * imgArr.length + "px";
    var num = 0
   var timer =  setInterval(function(){
        bigbox.scrollLeft = num * imgArr[num].clientWidth;
        ++num
        if(num>=imgArr.length){
            num = 0;
        }
        move(bigbox.scrollLeft,num * imgArr[num].clientWidth)
        // console.log(imgArr[num].offsetWidth)
    },2000)
    function move(start,end,time = 10){
        var step = 0
        var maxstep = 100
        var everystep = (end-start)/maxstep
        // console.log(everystep)
        var timer2 = setInterval(function(){
            if(step>=maxstep){
                clearInterval(timer2)
            }else{
                bigbox.scrollLeft = Math.ceil(bigbox.scrollLeft)+everystep
            }
            step++
        },time)
    }
</script>
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号