自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

突發(fā)奇想!Vue3 實(shí)現(xiàn)消息無(wú)限滾動(dòng)的新思路!

開(kāi)發(fā) 前端
怎么讓數(shù)據(jù)不斷增加呢,并且增加的規(guī)則是什么呢?其實(shí)很簡(jiǎn)單,我們每次滾上去一項(xiàng),就拷貝這一項(xiàng)push 到列表數(shù)據(jù)末端,這樣就能做到數(shù)據(jù)永遠(yuǎn)滾不完。

前言

大家好,我是林三心,用最通俗易懂的話(huà)講最難的知識(shí)點(diǎn)是我的座右銘,基礎(chǔ)是進(jìn)階的前提是我的初心!

最近有一個(gè)需求,需要在頁(yè)面中做一個(gè)垂直方向的無(wú)限滾動(dòng),效果基本為如下,這個(gè)滾動(dòng)是一直在持續(xù)的,不斷循環(huán)。

圖片

這個(gè)效果挺有意思的,實(shí)現(xiàn)起來(lái)不難,所以分享一下!

實(shí)現(xiàn)

基礎(chǔ)頁(yè)面

首先準(zhǔn)備一下基礎(chǔ)的頁(yè)面,之所以給容器設(shè)置 overflow:hidden 是為了把滾動(dòng)條給去掉,因?yàn)槲覀儾⒉恍枰獫L動(dòng)條。

圖片圖片

可以看出有些項(xiàng)是不在容器可視范圍內(nèi)的,且每一項(xiàng)的高度是 22px(每一項(xiàng)的高度可以自己定,我這里就用 22px 來(lái)進(jìn)行示范)。

圖片圖片

滾動(dòng)起來(lái)

接下來(lái)得讓這個(gè)容器滾動(dòng)起來(lái),那要怎么滾動(dòng)呢?可以使用 scrollTo 這個(gè)方法來(lái)進(jìn)行滾動(dòng)~并且為了持續(xù)保持滾動(dòng),可以使用 requestAnimationFrame 來(lái)不斷進(jìn)行。

每次都對(duì) top 進(jìn)行遞增,保證容器不斷向上滾動(dòng)。

圖片圖片

但是我們可以看到,雖然top 一直在遞增,但是滾動(dòng)到最后就不動(dòng)了!這是因?yàn)檫@個(gè)時(shí)候已經(jīng)滾動(dòng)到最底部了,那么自然就滾動(dòng)不了了。

圖片圖片

永遠(yuǎn)滾動(dòng)不完?

上面為啥滾到底部就滾不動(dòng)了呢?因?yàn)榈阶畹撞苛?,所以滾不動(dòng)了呀!

那么想要永遠(yuǎn)滾不完應(yīng)該怎么辦呢?其實(shí)有一種辦法,那就是永遠(yuǎn)到不了底,那要怎么實(shí)現(xiàn)呢?其實(shí)很簡(jiǎn)單,只要讓數(shù)據(jù)不斷增加就行!

怎么讓數(shù)據(jù)不斷增加呢,并且增加的規(guī)則是什么呢?其實(shí)很簡(jiǎn)單,我們每次滾上去一項(xiàng),就拷貝這一項(xiàng)push 到列表數(shù)據(jù)末端,這樣就能做到數(shù)據(jù)永遠(yuǎn)滾不完!

圖片圖片

下面是代碼實(shí)現(xiàn),為什么是除以22 呢?因?yàn)槊恳豁?xiàng)的高度是 22px。

圖片圖片

現(xiàn)在可以達(dá)到想要的無(wú)限滾動(dòng)效果。

圖片圖片

數(shù)據(jù)不斷增長(zhǎng)?

但是其實(shí)上面的做法還是有缺點(diǎn)的,因?yàn)閿?shù)據(jù)不斷地push也就是不斷地增加,如果頁(yè)面保持一段時(shí)間的話(huà),會(huì)大大占用內(nèi)存,導(dǎo)致頁(yè)面卡頓??!

所以我們可以在適當(dāng)?shù)臅r(shí)間點(diǎn),去初始化數(shù)據(jù),也就是把數(shù)據(jù)恢復(fù)到一開(kāi)始樣子,這樣就能避免數(shù)據(jù)不斷增加了!

那么應(yīng)該在什么時(shí)機(jī)去初始化數(shù)據(jù)呢?并且要怎么初始化才能讓用戶(hù)察覺(jué)不出來(lái)呢?怎么做到無(wú)縫銜接進(jìn)行初始化呢?

通過(guò)一個(gè)圖告訴大家~其實(shí)最好的時(shí)機(jī)就是在剛好滾動(dòng)完一輪的時(shí)候。

圖片圖片

最終代碼實(shí)現(xiàn)如下:

圖片圖片

最終實(shí)現(xiàn)效果:

圖片 圖片

責(zé)任編輯:武曉燕 來(lái)源: 前端之神
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)