1. 程式人生 > >純js無縫滾動

純js無縫滾動

 HTML程式碼

<!--父容器要使用overflow: hidden;-->
<div id="imgsList" style="height:150px;width:980px;overflow: hidden;">  
    <!--滾動容器-->
    <div id="marquee_self">
        <ul id="marquee_ul">
            <li><img src="" width="180px" height="100px"></li
> <li><img src="" width="180px" height="100px"></li> <li><img src="" width="180px" height="100px"></li> </ul> </div> </div>

CSS程式碼

#marquee_self *{
    margin: 0;
    padding: 0;
}
#marquee_self{
    width
: 1620px; //所有圖片長度個數*width height: 100px; //圖片高度 //margin: 100px auto; 居中 background-color: #646464; position: relative; overflow: hidden; } #marquee_self ul{ position:absolute; left:0; top:0; overflow: hidden; //li中超出部分隱藏掉 background-color: #3b7796; //背景色用來看問題
} #marquee_self ul li{ float: left; //左對齊變為圖片水平 width: 180px; //圖片寬度 height: 100px; //圖片高度 list-style: none; //無間隙 }

JS程式碼

<script type="text/javascript">
    window.onload = function(){
        var oDiv = document.getElementById('marquee_self');   //容器節點
        var oUl = document.getElementById('marquee_ul');    //ul節點
        var speed = -2;   //初始化速度,預設往左

        oUl.innerHTML += oUl.innerHTML;//ul中圖片內容翻倍
        var oLi= oUl.getElementsByTagName('li');  //獲取ul節點下所有li集合
        oUl.style.width = oLi.length*180+'px';//設定ul的寬度翻倍後的寬度,使圖片可以放下

        /*var oBtn1 = document.getElementById('btn_left');  左移動按鈕
        var oBtn2 = document.getElementById('btn_right');  右移動按鈕*/

        function move(){
            if(oUl.offsetLeft<-(oUl.offsetWidth/2)){    //向左滾動,當向左滾動超過總ul長度一半時
                oUl.style.left = 0;   //變為從頭開始
            }

            if(oUl.offsetLeft > 0){        //向右滾動,當靠右的圖1移出邊框時
                oUl.style.left = -(oUl.offsetWidth/2)+'px';
            }

            oUl.style.left = oUl.offsetLeft + speed + 'px';   //圖片移動
        }

        /*oBtn1.addEventListener('click',function(){   //向左移動按鈕點選事件
            speed = -2;
        },false);
        oBtn2.addEventListener('click',function(){    //向右移動按鈕點選事件
            speed = 2;
        },false);*/

        var timer = setInterval(move,30);//全域性變數 ,儲存返回的定時器

        oDiv.addEventListener('mouseout', function () {  //滑鼠移開新增計時器
            timer = setInterval(move,30);
        },false);
        oDiv.addEventListener('mousemove', function () {  //滑鼠移入清除定時器
           clearInterval(timer);
        },false);
    }
</script>