无缝滚动scrollLeft

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        *{margin:0;
            padding: 0;}

        #outer{
            width: 996px;
            height: 400px;
            /*overflow: scroll;*/
            overflow: hidden;
            margin:0 auto;

        }
        #inner{
            width: 1992px;
            height: 400px;
            background: yellow;
        }
        img{
            width: 249px;
            height: 400px;
        }
        li{
            list-style-type: none;
            float: left;
        }
    </style>

</head>
<body>
    <!-- scrollTop:右侧滚动条的位置
    知识点scrollLeft:横向滚动条距离左侧的位置 -->
    <div id = "outer">
        <div id = "inner">
            <ul>
                <li><img src="img/3.jpg" alt=""></li>
                <li><img src="img/1.jpg" alt=""></li>
                <li><img src="img/5.jpg" alt=""></li>
                <li><img src="img/4.jpg" alt=""></li>    
                <li><img src="img/3.jpg" alt=""></li>
                <li><img src="img/1.jpg" alt=""></li>
                <li><img src="img/5.jpg" alt=""></li>
                <li><img src="img/4.jpg" alt=""></li>                
            </ul>
        </div>
    </div>
    <script>
        outer = document.getElementById('outer');
        inner = document.getElementById('inner');
        oli = document.getElementsByTagName('li');
        var outerWidth = outer.offsetWidth;
        var time = null;
        var x = 0;    //用来改变scrollLeft值的变量x
        var time2 = null;
        var olilength = oli.length/2; //li个数的一半,也就是不重复的图片个数
        function getSCL(){
            x++;
            outer.scrollLeft = x;
            for(i=1;i<=olilength;i++)
            {
                if(x==(outerWidth/olilength)*i)  //横滚动轮scrollLeft =x ;x=一张图片宽时暂停,2张图片宽时暂停,3张,4张时也暂停……
                {
                clearInterval(time); //暂停
                time2 = setTimeout(function(){
                    time = setInterval(getSCL,1);  //隔两秒(暂停2S后启动计时器)让之以原速继续前进
                },2000);
                }
            }
            if(x>=outerWidth)    //**实现无缝滚动,当滚动到第一组图的最后一张时,将横滚轮变成0,从第一组图开始重新滚动;
            {
                x = 0;
            }
        }
        time = setInterval(getSCL,1);
        
        inner.onmouseover = function(){
            clearInterval(time);//鼠标移入,清除计时器
            clearInterval(time2);
        }
        inner.onmouseout = function(){
            clearInterval(time);//鼠标移出先清除计时器,避免重复进出造成重复调用计时器产生的加速现象;
            clearInterval(time2);
            time=setInterval(getSCL,1);//鼠标移出,继续滚动;
        }
    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值