關(guān)于網(wǎng)頁中的無縫滾動(dòng)的js代碼
隨便打開一個(gè)網(wǎng)頁,基本上都會(huì)看到無縫滾動(dòng)或者輪播圖,比如淘寶還有360官網(wǎng)的首頁

觀察這些輪播圖可以發(fā)現(xiàn)圖片可以來回循環(huán)地切換,那么是怎樣做到的呢?
做到輪播圖或者說無縫滾動(dòng)主要有兩種方式,一種是通過對圖片的明暗即透明圖的改變來顯示或隱藏圖片,另一種是通過運(yùn)動(dòng)框架,將圖片顯示在可視區(qū)域。這兩種方式都會(huì)用到同一個(gè)東西,那就是定時(shí)器。
JavaScript中的定時(shí)器有兩種,1.setInterval();2.setTimeout();相對應(yīng)的關(guān)閉定時(shí)器也有兩種方法,clearInterval()和clearTimeout()。兩種定時(shí)器的區(qū)別是前者可以執(zhí)行多次,而后者只執(zhí)行一次。
這次只說無縫滾動(dòng),下篇介紹輪播圖。
實(shí)現(xiàn)簡單的無縫滾動(dòng)的代碼如下:
/*完整的代碼*/
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<style>
div{position:relative;width:630px;height:220px;border:solid 2px black;overflow:hidden;}
ul{position:absolute;top:10px;left:0;}
img{width:200px;height:200px;float:left;margin-right:10px;border:2px solid yellow;}
li{list-style:none;margin:0;padding:0;}
ul{margin:0;padding:0;}
</style>
<script>
window.onload=function(){
var oUl=document.getElementById("main");
var aLi=oUl.getElementsByTagName("img");
var oInput=document.getElementsByTagName("input")[0];
oUl.innerHTML+=oUl.innerHTML;
oUl.style.width=aLi.length*aLi[0].offsetWidth+"px";
var timer=null;
setInterval(function(){
oUl.style.left=oUl.offsetLeft-8+"px";
if(oUl.offsetLeft<-oUl.offsetWidth/2){
oUl.style.left="0px";
}
},30);
};
</script>
</head>
<body>
<div>
<ul id="main">
<li><img src="../img/1.jpg"></li>
<li><img src="../img/2.jpg"></li>
<li><img src="../img/3.jpg"></li>
<li><img src="../img/4.jpg"></li>
<li><img src="../img/9.jpg"></li>
</ul>
</div>
</div>
</body>
</html>
/-----------------------------------------------------------------------------------------------------------------------------------------------------------/
無縫滾動(dòng)的布局比較簡單,下面主要講解JS部分內(nèi)容:
首先分別獲取到ul和li,再將ul里面的內(nèi)容復(fù)制一份,通過js動(dòng)態(tài)修改ul的寬度(如果要做到上下無縫滾動(dòng),則修改其寬度),最后開定時(shí)器,代碼中是每隔30微秒ul向左移動(dòng)8個(gè)像素,而當(dāng)ul的可視左邊距小于ul總長度的一半時(shí),使其變?yōu)?。由于計(jì)算機(jī)的運(yùn)行速度非??欤詭缀醺杏X不到這一變化。我們看到的只是圖片不斷地向左移動(dòng),無休止的運(yùn)動(dòng)。
以上所述是小編給大家介紹的關(guān)于網(wǎng)頁中的無縫滾動(dòng)的js代碼,希望對大家有所幫助!
- JS觸摸屏網(wǎng)頁版仿app彈窗型滾動(dòng)列表選擇器/日期選擇器
- JS實(shí)現(xiàn)網(wǎng)頁上隨滾動(dòng)條滾動(dòng)的層效果代碼
- js網(wǎng)頁滾動(dòng)條滾動(dòng)事件實(shí)例分析
- JavaScript控制網(wǎng)頁平滑滾動(dòng)到指定元素位置的方法
- JS實(shí)現(xiàn)網(wǎng)頁滾動(dòng)條感應(yīng)鼠標(biāo)變色的方法
- js判斷iframe內(nèi)的網(wǎng)頁是否滾動(dòng)到底部觸發(fā)事件
- 實(shí)現(xiàn)網(wǎng)頁內(nèi)容水平或垂直滾動(dòng)的Javascript代碼
- js網(wǎng)頁側(cè)邊隨頁面滾動(dòng)廣告效果實(shí)現(xiàn)
- JavaScript實(shí)現(xiàn)瀏覽器網(wǎng)頁自動(dòng)滾動(dòng)并點(diǎn)擊的示例代碼
相關(guān)文章
Javascript 原型和繼承(Prototypes and Inheritance)
前面我們看到了如何使用 constructor 來初始化對象。如果這樣做,那么每一個(gè)創(chuàng)建的新對象都會(huì)對那些相同的屬性,方法建立一個(gè)獨(dú)立的副本。而實(shí)際上有更加有效的方法來指定方法,常量,以及其他一些可被所有該類的對象共享的屬性。2009-04-04
一次Webpack配置文件的分離實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于一次Webpack配置文件的分離實(shí)戰(zhàn)記錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11
JS獲取節(jié)點(diǎn)的兄弟,父級,子級元素的方法
本篇文章主要是對JS獲取節(jié)點(diǎn)的兄弟,父級,子級元素的方法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01
JavaScript 中字符串和數(shù)組的概念解析與多角度對比區(qū)分
JavaScript中的字符串和數(shù)組是兩種重要的數(shù)據(jù)結(jié)構(gòu),各有特點(diǎn)和應(yīng)用場景,字符串主要用于文本處理,是不可變的;數(shù)組用于存儲有序集合,是可變的,理解它們的區(qū)別和應(yīng)用場景,有助于編寫更高效和易維護(hù)的代碼,感興趣的朋友跟隨小編一起看看吧2024-11-11

