js计时器案例--无缝滚动动画

js计时器案例--无缝滚动动画

一、效果图

在这里插入图片描述

二、实现思路

  • 第一步:通过克隆节点复制两个ul,通过计时器让他实现无缝滚动。
  • 第二步:设置滚动的速度以及时间。
  • 第三步:实现鼠标进入滚动停止,离开继续进行无缝滚动。

三、主要代码

<script>
    var box=document.getElementsByClassName("box")[0];
    var nav=document.getElementsByClassName("nav")[0];
    var list=document.getElementsByClassName("list")[0];
    var speedIpt=document.getElementsByClassName("speed")[0];
    var setSpeed=document.getElementsByClassName("setSpeed")[0];
    var timerIpt=document.getElementsByClassName("timerIpt")[0];
    var setTimer=document.getElementsByClassName("setTimer")[0];
    var maxLeft=nav.clientWidth;
    var speed=5;
    var timer=1;
    var time;
    //使用计时器写无缝滚动
    window.onload=function(){
        //元素克隆
        list.appendChild(nav.cloneNode(true));
        //直接执行动画
        loop();
        //设置速度
        setSpeed.onclick=function(){
            var val=speedIpt.value;
            if(val.length>0&&!isNaN(val.value)){
                speed=parseInt(val);
            }
            speedIpt.value="";
        }
        //设置时间
        setTimer.onclick=function(){
            var val=timerIpt.value;
            if(val.length>0&&!isNaN(val.value)){
                timer=parseInt(val);
            }
            timerIpt.value="";
        }
        //设置鼠标悬停滚动停止
        box.onmouseenter=function(){
            clearTimeout(time);
        }
        box.onmouseleave=function(){
            loop();
        }
    }
    function loop(){
        //获取scrollLeft
        var scleft=box.scrollLeft;
        scleft+=speed;
        if(scleft>=maxLeft){
            scleft=0;
        }
        box.scrollLeft=scleft;
        time=setTimeout(loop,timer);
    } 
</script> 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南初️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值