無縫滾動的簡單實現代碼(推薦)_javascript技巧

來源:互聯網
上載者:User

原理:

1.給ul一個絕對位置使其脫離文檔流,left設定為0,把圖片塞進ul裡,編寫一個“移動"函數,函數功能能夠使ul的left以一個正速度向右跑動,

2.設定一個定時器,讓"移動"函數每30(參數可變)毫秒執行一次

3.因為ul的長度會“跑”完,此時可以使ul的content也就是img增加一倍,

oUl.innerHTML +=oUl.innerHTML;

4.此時因為ul的content增加,其width也會隨著增大,根據實際項目展示圖片數量可能改動或不確定性,

oUl.style.width = oLi.length*oLi[0].offsetWidth+'px';

5.往“移動”函數裡增添代碼。

5.1此時ul向右移動,判斷當ul的offsetLeft>0時,把ul向左拉“一半ul的寬度”,也就是使ul能夠向右一直無限制移動

if(oUl.offsetLeft>0){     oUl.style.left = -oUl.offsetWidth/2+'px';}

5.2當ul向左移動,其offsetLeft跑了ul一半的寬度時,把整個ul拉回至初始的left:0;

if (oUl.offsetLeft<-oUl.offsetWidth/2) {      oUl.style.left = 0; }

上代碼:

html:

<div id="box">    <ul>      <li><a href="#"><img src="1.jpg" /></a></li>      <li><a href="#"><img src="2.jpg" /></a></li>      <li><a href="#"><img src="3.jpg" /></a></li>      <li><a href="#"><img src="4.jpg" /></a></li>    </ul> </div>

css:

* {margin: 0;padding: 0;}   #box{ width: 480px; height: 110px; border: 1px red solid; margin: 100px auto;overflow: hidden; position: relative; }   #box ul{ position: absolute; left: 0; top: 5px;}   #box ul li{list-style: none; float: left; width: 100px; height: 100px; padding-left: 16px; }   #box ul li img{width: 100px; height: 100px;}

js:

<script>         window.onload = function(){             var oDiv = document.getElementById('div1');             var oUl = oDiv.getElementsByTagName('ul')[0];             var oLi = oUl.getElementsByTagName('li');             var aA = document.getElementsByTagName('a');             var iSpeed = 10;      //讓ul開始就具有一個速度走動                             oUl.innerHTML +=oUl.innerHTML;                oUl.style.width = oLi.length*oLi[0].offsetWidth+'px';                  aA[0].onclick = function(){                      iSpeed = -10;               };                aA[1].onclick = function(){                      iSpeed = 10;               };               function fnMove(){                   if (oUl.offsetLeft<-oUl.offsetWidth/2) {   //負數是因為ul的left是負數                             oUl.style.left = 0;                       }                   else if(oUl.offsetLeft>0){                         oUl.style.left = -oUl.offsetWidth/2+'px';                           }                                                         oUl.style.left = oUl.offsetLeft+iSpeed+'px';    //整個ul向右移動                                       };                 var timer = null;                              clearInterval(timer);                 timer = setInterval(fnMove,30);                 oUl.onmouseover = function(){                    clearInterval(timer);                 };                 oUl.onmouseout = function(){                    timer = setInterval(fnMove,30); //當滑鼠移開的時候執行這個定時器                 };                     };      </script>

如有錯誤,歡迎指正。

以上這篇無縫滾動的簡單實現代碼(推薦)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援雲棲社區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.