JavaScript水平無縫滾動程式碼
本章節分享一段程式碼例項,它實現了圖片無縫水平滾動效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> * { margin: 0; padding: 0; } #box { position: relative; width: 800px; margin: 100px auto; } #div1 { width: 800px; height: 120px; position: relative; overflow: hidden; } ul { position: absolute; left: 0; top: 0; } li { float: left; list-style: none; width: 160px; height: 120px; } a { text-decoration: none; position: absolute; z-index: 10; } .left { left: -15px; top: 11px; } .right { right: -15px; top: 11px; } </style> <script type="text/javascript"> window.onload = function () { var oDiv = document.getElementById("div1"); var oUl = oDiv.getElementsByTagName("ul")[0]; var aLi = oUl.getElementsByTagName("li"); var button = document.getElementsByTagName("a"); var speed=3; oUl.innerHTML += oUl.innerHTML; oUl.style.width = aLi[0].offsetWidth * aLi.length + "px"; function move() { if (oUl.offsetLeft < -oUl.offsetWidth / 2) { oUl.style.left = 0 } if (oUl.offsetLeft > 0) { oUl.style.left = -oUl.offsetWidth / 2 + "px" } oUl.style.left = oUl.offsetLeft + speed + "px" } var timer = setInterval(move, 30) oDiv.onmousemove = function () { clearInterval(timer) } oDiv.onmouseout = function () { timer = setInterval(move, 30) } button[0].onclick = function () { speed = -3 } button[1].onclick = function () { speed = 3 } } </script> </head> <body> <div id="box"> <div id="div1"> <ul> <li><img src="demo/js/img/one.jpg"></li> <li><img src="demo/js/img/two.jpg"></li> <li><img src="demo/js/img/three.jpg"></li> <li><img src="demo/js/img/four.jpg"></li> <li><img src="demo/js/img/five.jpg"></li> </ul> </div> <a href="javascript:;" class="left"><img src="demo/js/img/leftbt.jpg"></a> <a href="javascript:;" class="right"><img src="demo/js/img/rightbt.jpg"></a> </div> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).window.onload = function () {},文件內容完全載入完畢再去執行函式彙總的程式碼。
(2).var oDiv = document.getElementById("div1"),獲取id屬性值為div1的元素物件。
(3).var oUl = oDiv.getElementsByTagName("ul")[0],獲取一個ul元素。
(4).var aLi = oUl.getElementsByTagName("li"),獲取oUI元素下所有的li元素集合。
(5).var button = document.getElementsByTagName("a"),獲取連結a元素集合。
(6).var speed,宣告一個變數,用來設定運動的速度,下面會有介紹。
(7).oUl.innerHTML += oUl.innerHTML,再追加一份原來oul元素下的html內容。
(8).oUl.style.width = aLi[0].offsetWidth * aLi.length + "px",設定oul元素的寬度為所有li的數目乘以li元素寬度。
(9).function move() {
if (oUl.offsetLeft < -oUl.offsetWidth / 2) {
oUl.style.left = 0
}
if (oUl.offsetLeft >= 0) {
oUl.style.left = -oUl.offsetWidth / 2 + "px"
}
oUl.style.left = oUl.offsetLeft + speed + "px"
},定時器函式每隔指定的時間呼叫一次move函式也就實現了無縫滾動效果。
如果oul元素小於-oUl.offsetWidth / 2,也就是oul元素向左滾動完畢一個完整圖片佇列(因為html內容進行了拷貝追加,那麼就變成了兩個圖片佇列),那麼就將oul的left屬性值重置為0。
(10).if (oUl.offsetLeft > 0) {
oUl.style.left = -oUl.offsetWidth / 2 + "px"
},這個是判斷向右滾動是否完成一個圖片佇列或者處於起始位置。
如果滿足上面的條件,那麼就將oul的left值設定為-oUl.offsetWidth / 2 + "px"。
(11).oUl.style.left = oUl.offsetLeft + speed + "px",實現滾動效果。
二.相關閱讀:
(1).getElementsByTagName()參閱document.getElementsByTagName()一章節。
(2).innerHTML參閱innerHTML一章節。
(3).offsetWidth參閱js offsetWidth一章節。
(4).setInterval()參閱setInterval()一章節。
(5).offsetLeft參閱offsetleft一章節。
(6).onmouseout參閱javascript mouseout 事件一章節。
相關文章
- CSS水平無縫滾動效果CSS
- JavaScript無縫滾動 記錄JavaScript
- js無縫滾動JS
- JavaScript圖片橫向無縫滾動詳解JavaScript
- js-字幕無縫滾動JS
- jQuery 間歇的無縫滾動jQuery
- jQuery圖片無縫滾動效果jQuery
- react無縫滾動輪播圖React
- 向上無縫滾動--原理及思想
- 直播系統原始碼,vue實現無縫滾動原始碼Vue
- CSS實現迴圈無縫滾動CSS
- jQuery 圖片列表垂直間歇無縫滾動jQuery
- JQuery實現圖片輪播無縫滾動jQuery
- 單行新聞公告間歇垂直無縫滾動
- div滾動條樣式,水平滾動
- vue無縫滾動的外掛開發填坑分享Vue
- js、jQuery實現文字上下無縫輪播、滾動效果JSjQuery
- H5移動端獲獎無縫滾動動畫實現H5動畫
- 邏輯難理解版本的輪播圖(實現無縫滾動)
- 怎樣用原生js配合css的transition寫個無縫滾動JSCSS
- HTMl 中marquee標籤實現無縫滾動跑馬燈效果HTML
- 如何開發一款 60fps 的“無縫滾動”外掛
- 10行程式碼實現頁面無限滾動行程
- 小程式:無限自動滾動的Gallery
- 新聞單條無縫間歇向上滾動(第一次分享)
- 90行程式碼,15個元素實現無限滾動行程
- 左右帶有按鈕圖片水平滾動
- 如何讓VB6程式碼編輯器垂直滾動條隨滑鼠滾輪滾動
- 美化滾動條效果程式碼例項
- CSS3滾動條效果程式碼CSSS3
- JavaFx 實現水平滾動文字(跑馬燈效果)Java
- JavaScript滑鼠中鍵滾動事件JavaScript事件
- Vue 無限滾動元件Vue元件
- CSS3熱身實戰–過渡與動畫(實現炫酷下拉,手風琴,無縫滾動)CSSS3動畫
- JavaScript 滾動條定位指定位置JavaScript
- JavaScript自定義滾動條詳解JavaScript
- JavaScript手寫程式碼無敵祕籍JavaScript
- 走近Fusion元件——無限滾動元件