原生js之滑动轮播图

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>轮播图</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
       #box{
           width:490px ;
           height: 170px;
           padding: 5px;
           border: 1px solid red;
           margin: 100px auto;
       }
       #inner{
           width:490px ;
           height: 170px;
           overflow: hidden;
           position: relative;
       }
        ul{
            width: 500%;
            list-style: none;
            position: absolute;

        }
        li{
            float: left;
        }
        .square{
            position: absolute;
            bottom: 10px;
            right: 10px;
        }
        span{
            display:inline-block;
            width: 16px;
            height: 16px;
            line-height: 16px;
            color: black;
            text-align: center;
            margin: 3px;
            background: snow;
            font-size: 12px;
            cursor: pointer;
        }
      .current{
          background: orange;
      }

    </style>
</head>
<script>
    window.onload=function(){
        var inner=document.getElementById("inner");
        var ul=inner.children[0];
        var imgWidth=inner.offsetWidth;
        var spanArr=inner.children[1].children;
        for(var i=0;i<spanArr.length;i++){
            //绑定的是索引值.
            spanArr[i].index=i;
            spanArr[i].οnmοuseοver=function(){
                //点亮盒子排他思想
                for(var j=0;j<spanArr.length;j++){
                    spanArr[j].className="";
                }
                this.className="current";
                animate(ul,-this.index*imgWidth)
            }
        }
        //函数的封装
              function animate(ele,target){
                  //要用定时器前先清除定时器.
                  clearInterval(ele.timer);
               
                  //目标值如果大于当前值取正,目标值如果小于当前值取负
                  var speed=target>ele.offsetLeft?10:-10;
                  ele.timer=setInterval(function(){
                      var val=target-ele.offsetLeft;
                      //盒子自身的位置+步长
                      ele.style.left=ele.offsetLeft+speed+"px";
                      if(Math.abs(val)<Math.abs(speed)){
                          ele.style.left=target+"px";
                          clearInterval(ele.timer);
                      }
                  },10)
              }
    }
</script>
<body>
<div  id="box">
    <div  id="inner">
        <ul>
            <li><img  src="img6/01.jpg"> </li>
            <li><img  src="img6/02.jpg"> </li>
            <li><img  src="img6/03.jpg"> </li>
            <li><img  src="img6/04.jpg"> </li>
            <li><img  src="img6/05.jpg"> </li>
        </ul>
        <div  class="square">
            <span   class="current">1</span>
            <span>2</span>
            <span>3</span>
            <span>4</span>
            <span>5</span>
        </div>
    </div>
</div>



</body>
</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值