原生JS實(shí)現(xiàn)列表內(nèi)容自動(dòng)向上滾動(dòng)效果
效果展示
(鼠標(biāo)移入,滾動(dòng)停止;鼠標(biāo)移出,滾動(dòng)繼續(xù))

實(shí)現(xiàn)原理
1. html結(jié)構(gòu):核心是ul > li,ul外層包裹著div。因?yàn)橄胍獌?nèi)容循環(huán)滾動(dòng)無(wú)縫銜接,所以在原有ul后面還要有一個(gè)一樣內(nèi)容的ul。如下圖:
(紅色邊框?yàn)榭梢晠^(qū)域div,此處為了方便查看效果去除overflow:hidden;)

2. 樣式方面:由于要滾動(dòng),所以必須2個(gè)ul的高度 > 外層可視div高度,且div必須設(shè)置overflow:hidden;
代碼實(shí)現(xiàn)
HTML:
<div id="review_box"> <ul id="comment1"> <li>第一條</li> <li>第二條</li> <li>第三條</li> <li>第四條</li> <li>第五條</li> <li>第六條</li> </ul> <ul id="comment2"></ul> </div>
CSS:
* {
margin: 0;
padding: 0;
}
div {
width: 100px;
height: 63px; /* 必須 */
overflow: hidden;/* 必須 */
margin: 50px auto;
border: 1px solid red;
text-align: center;
}
ul {
list-style: none;
}
JavaScript:
window.onload = roll(50);
function roll(t) {
var ul1 = document.getElementById("comment1");
var ul2 = document.getElementById("comment2");
var ulbox = document.getElementById("review_box");
ul2.innerHTML = ul1.innerHTML;
ulbox.scrollTop = 0; // 開(kāi)始無(wú)滾動(dòng)時(shí)設(shè)為0
var timer = setInterval(rollStart, t); // 設(shè)置定時(shí)器,參數(shù)t用在這為間隔時(shí)間(單位毫秒),參數(shù)t越小,滾動(dòng)速度越快
// 鼠標(biāo)移入div時(shí)暫停滾動(dòng)
ulbox.onmouseover = function () {
clearInterval(timer);
}
// 鼠標(biāo)移出div后繼續(xù)滾動(dòng)
ulbox.onmouseout = function () {
timer = setInterval(rollStart, t);
}
}
// 開(kāi)始滾動(dòng)函數(shù)
function rollStart() {
// 上面聲明的DOM對(duì)象為局部對(duì)象需要再次聲明
var ul1 = document.getElementById("comment1");
var ul2 = document.getElementById("comment2");
var ulbox = document.getElementById("review_box");
// 正常滾動(dòng)不斷給scrollTop的值+1,當(dāng)滾動(dòng)高度大于列表內(nèi)容高度時(shí)恢復(fù)為0
if (ulbox.scrollTop >= ul1.scrollHeight) {
ulbox.scrollTop = 0;
} else {
ulbox.scrollTop++;
}
}
總結(jié)
以上所述是小編給大家介紹的原生JS實(shí)現(xiàn)列表內(nèi)容自動(dòng)向上滾動(dòng)效果,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
對(duì)于防止按鈕重復(fù)點(diǎn)擊的嘗試詳解
這篇文章主要介紹了對(duì)于防止按鈕重復(fù)點(diǎn)擊的嘗試,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
JavaScript?評(píng)測(cè)代碼運(yùn)行速度的案例代碼
在?JavaScript?中,可以使用?performance.now()?API?來(lái)評(píng)測(cè)代碼的運(yùn)行速度。該?API?返回當(dāng)前頁(yè)面的高精度時(shí)間戳,您可以在代碼執(zhí)行前后調(diào)用它來(lái)計(jì)算代碼執(zhí)行所需的時(shí)間,這篇文章主要介紹了JavaScript?評(píng)測(cè)代碼運(yùn)行速度,需要的朋友可以參考下2023-02-02
js將日期格式轉(zhuǎn)換為YYYY-MM-DD HH:MM:SS
這篇文章主要介紹了js將日期格式轉(zhuǎn)換為YYYY-MM-DD HH:MM:SS,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
javascript window.onerror事件學(xué)習(xí)新收獲
javascript window.onerror事件學(xué)習(xí)新收獲...2007-11-11
javascript時(shí)間與時(shí)間戳互轉(zhuǎn)多種方式
javascript獲取時(shí)間、時(shí)間戳等,最核心的就是利用Date關(guān)鍵詞去獲取,時(shí)間戳的獲取方式整理了5種方法,后4種是利用new Date()實(shí)例化對(duì)象來(lái)獲取當(dāng)前時(shí)間,再對(duì)當(dāng)前獲取的時(shí)間再進(jìn)一步處理獲取時(shí)間戳,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-11-11

