• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
南初️
帮助3

一、效果图

学新通

二、实现思路

  • 第一步:通过克隆节点复制两个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> 
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfgahib
系列文章
更多 icon
同类精品
更多 icon
继续加载