左右无缝滚动

Posted Cutelady0927

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了左右无缝滚动相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
* {margin:0; padding:0;}
#div1 {width:712px; height:108px; margin:100px auto; position:relative; background:red; overflow:hidden;}
#div1 ul {position:absolute; left:0; top:0;}
#div1 ul li {float:left; width:178px; height:108px; list-style:none;}
</style>
<script>
window.onload=function ()
{
    var oDiv=document.getElementById(div1);
    var oUl=oDiv.getElementsByTagName(ul)[0];
    var aLi=oUl.getElementsByTagName(li);
    
    var speed=-2;
    
    //oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;
    oUl.innerHTML+=oUl.innerHTML;
    oUl.style.width=aLi[0].offsetWidth*aLi.length+px;//ul的宽度等于li的宽度乘以li个数
    
    function move(){
        if(oUl.offsetLeft<-oUl.offsetWidth/2)//判断图片是否滚动到一半
        {
            oUl.style.left=0;//滚动到一半的时候把它拉回来到初始的位置
        }
        if(oUl.offsetLeft>0)//当发现left大于0的时候
        {
            oUl.style.left=-oUl.offsetWidth/2+‘px‘; //迅速把它拉回来到一半的位置
        }
        oUl.style.left=oUl.offsetLeft+speed+px;
    }
    var timer=setInterval(move, 30);
    
    oDiv.onmouseover=function ()
    {
        clearInterval(timer);//鼠标移入清除定时器
    };
    
    oDiv.onmouseout=function ()
    {
        timer=setInterval(move, 30);//鼠标移出设置定时器
    };
    
    document.getElementsByTagName(a)[0].onclick=function ()
    {
        speed=-2;//左边箭头
    };
    document.getElementsByTagName(a)[1].onclick=function ()
    {
        speed=2;//右边箭头
    };
};
</script>
</head>

<body>
<a href="javascript:;">向左走</a>
<a href="javascript:;">向右走</a>
<div id="div1">
    <ul>
        <li><img src="img2/1.jpg" /></li>
        <li><img src="img2/2.jpg" /></li>
        <li><img src="img2/3.jpg" /></li>
        <li><img src="img2/4.jpg" /></li>
    </ul>
</div>
</body>
</html>

 

物体运动基础
让Div移动起来 offsetLeft的作用
用定时器让物体连续移动

效果原理
让ul一直向左移动
复制li innerHTML和+=
修改ul的width
滚动过界后,重设位置 判断过界

改变滚动方向
修改speed
修改判断条件 鼠标移入暂停 移入关闭定时器 移出重新开启定时器

 

以上是关于左右无缝滚动的主要内容,如果未能解决你的问题,请参考以下文章

左右半透明的无缝滚动

左右无缝滚动

vue无缝滚动插件左右切换按钮不显示

banner无缝滚动动画,支持左右按钮和小点

js上下左右无缝滚动加悬停

谁能提供一个图片无缝滚动的代码,我是往淘宝店上放的,请提供一个详细的代码,解释的详细还可加分