基于jQuery實(shí)現(xiàn)列表循環(huán)滾動(dòng)小技巧(超簡(jiǎn)單)
看到一個(gè)很好的思路,記錄一下
之前使用jQuery做滾動(dòng)效果,在這兩篇文章里有寫(xiě):文一、文二,分別使用了scrollLeft()與scrollTop()、scroll()來(lái)實(shí)現(xiàn)
后來(lái)看到一個(gè)demo,覺(jué)得思路很妙,想著可以用來(lái)做列表內(nèi)容項(xiàng)的滾動(dòng),效果大概是這樣的:
思路是這樣的:
只要能夠不停地把第一個(gè)item移動(dòng)到末尾,其余的自會(huì)往上填補(bǔ)空缺,填補(bǔ)的過(guò)程用動(dòng)畫(huà)放慢些,就能有不斷滾動(dòng)的視覺(jué)效果了(數(shù)組刪了第一個(gè)元素,再在末尾加上這個(gè)元素,等于把第一個(gè)元素移動(dòng)到末尾;元素總量沒(méi)有改變,但位置全發(fā)生了改變)
代碼:
// 要填充的數(shù)據(jù) var data = { infoItem : [ "<strong>第1行:</strong>安之安之安之安之安之安之安之安之安之安之安", "<strong>第2行:</strong>陽(yáng)光彩虹小白馬陽(yáng)光彩虹小白馬陽(yáng)光彩虹小白馬", "<strong>第3行:</strong>天地之悠悠天地之悠悠天地之悠悠天地之悠悠天" ] } // 將數(shù)據(jù)動(dòng)態(tài)填充到頁(yè)面種 var infoList = [] for (let i = 0; i < data.infoItem.length; i++){ let infoStr = `<div class="item">${data.infoItem[i]}</div>` infoList.push(infoStr); } $(".info-wrapper").html(infoList.join("")) // 設(shè)置計(jì)時(shí)器,每隔2秒執(zhí)行一次(變換一次) var timer = null; timer = setInterval(function () { // 將第一行item移到最后一行,其他的往上挪填補(bǔ)空缺位 var infoItemTmp = infoList.shift(); $(".info-wrapper").append(infoItemTmp ); $(".item:first").remove(); infoList.push(infoItemTmp) }, 2000)
html和樣式部分:
<div class="container"> <div class="wrapper"> <div class="info"> <div class="info-wrapper"></div> </div> </div> </div>
.constainer { width: 900px; height: 400px; border: 2px solid #eee; display: flex; justify-content: center; align-items: center; } .wrapper { width: 500px; height: 300px; border: 1px solid #ccc; display: flex; justify-content: center; align-content: center; } .info { width: 100%; height: 100%; display: flex; flex-direction: column; justify-content: space-between; align-content: center; } .info-wrapper { width: 100%; height: 100%; overflow: hidden; } .item { border: 2px solid #ccc; border-left: 4px solid orange; height: 80px; width: 100%; display: flex; justify-content: center; align-items: center; box-sizing: border-box; border-radius: 8px; margin-top: 20px; }
目前效果是這樣的:
再加上滑動(dòng)效果的動(dòng)畫(huà):
.item:first-child { animation: move 2s linear; } @keyframes move { 100% { margin-top: -80px; } }
不斷滑動(dòng),到達(dá)可以加入新item的位置時(shí),觸發(fā)新item的加入:
// 設(shè)置計(jì)時(shí)器,每隔2秒執(zhí)行一次(變換一次)--與animation動(dòng)畫(huà)時(shí)設(shè)置時(shí)間一致 var timer = null; timer = setInterval(function () { if ($('.info').scrollTop() + $('.info').height() >= $('.info-wrapper').height()) { // 將第一行item移到最后一行,其他的往上挪填補(bǔ)空缺位 var infoItemTmp = infoList.shift(); $(".info-wrapper").append(infoItemTmp); $(".item:first").remove(); infoList.push(infoItemTmp) } }, 2000)
就可以得到開(kāi)頭的效果了
到此這篇關(guān)于基于jQuery實(shí)現(xiàn)列表循環(huán)滾動(dòng)小技巧(超簡(jiǎn)單)的文章就介紹到這了,更多相關(guān)jQuery列表循環(huán)滾動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
jQuery實(shí)現(xiàn)鼠標(biāo)懸停顯示提示信息窗口的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)鼠標(biāo)懸停顯示提示信息窗口的方法,涉及jQuery操作鼠標(biāo)事件及show、hide等方法的使用技巧,需要的朋友可以參考下2015-04-04用jQuery向div中添加Html文本內(nèi)容的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇用jQuery向div中添加Html文本內(nèi)容的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07jQuery實(shí)現(xiàn)延遲跳轉(zhuǎn)的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)延遲跳轉(zhuǎn)的方法,涉及jQuery中setTimeout方法延遲觸發(fā)的使用技巧,需要的朋友可以參考下2015-06-06jquery基本選擇器匹配多個(gè)元素的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇jquery基本選擇器匹配多個(gè)元素的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09可兼容IE的獲取及設(shè)置cookie的jquery.cookie函數(shù)方法
在使用IE來(lái)測(cè)試的時(shí)候,發(fā)現(xiàn)Discuz中的common.js里面的getcookie和setcookie這兩個(gè)方法子啊IE下不起作用,因此有了jquery.cookie.js的由來(lái),感興趣的朋友可以參考下2013-09-09