vue中調整某一div的滾動條始終觸底

2021-10-06 19:28:11 字數 1278 閱讀 2606

舉乙個比較長見的例子,在聊天框中,每一條訊息都是乙個元件,通過在父元件中根據資料v-for迴圈出來該元件,接收到訊息之後也能快速渲染出來,這是很方便的方法。

但是要注意的一點是,每次該div裡新增一條新的訊息之後右邊的滾動條應該是立馬觸底的,也就是顯示最新的一條訊息,因為訊息一般都是新增在乙個集合的末尾,當然也就是最後渲染,位置在div的最下端,而不是每次收到新的訊息之後,自己還要手動去調整滾動條拉到最下端。

那麼,如何實現vue中調整某一div的滾動條始終觸底呢?

首先,使某一div擁有縱向滾動條很簡單:

overflow-y

: scroll;

這個樣式可以使乙個div中的元素高度超出父級元素時隱藏,並通過右側滾動條來滑動瀏覽隱藏部分。

之後,咱們需要調整的該div的scrolltop來調整該滾動條的位置。這個樣式指滾動條距離頂部的數值,一開始在最頂端時為0,自然當達到某一數值時便可使滾動條觸底,當時當該值趨於無窮大時,雖然可能滾動條並沒有滑動這麼長的距離,但也依然以觸底計算,所以,當你並不去詳細計算滾動條的距離時,只是想觸底,可以將其設定的非常大,例如:

scrolltop=

9999999999

這樣瀏覽器對滾動條是預設觸底處理的。所以將事件方法最後使div得scrolltop=9999999999,就可以將滾動條始終觸底。

那麼問題來了,在vue得methods中如何獲取某一div呢?在原生js中大家知道可以document裡得getelementbyid,但是vue裡也有更方便得方法獲取某一div。就是ref屬性。例如:

"chat"

ref="chatbox"

>

div>

當給乙個元素新增了ref屬性之後,在方法裡就可以通過:

this

.$refs.chatbox //chatbox為上述ref的值

來獲取到該id,這時便可通過

this

.$refs.chatbox.scrolltop =

999999999

來修改該div的滾動條位置,達到觸底的效果。

但是這裡要注意,當新資料新增到集合中時,vue渲染是需要時間的,以上述聊天框舉例,當新增一條新資料時,vue渲染需要時間,如果直接設定滾動條觸底,可能會導致最新的資料仍然隱藏,滾動條在快接近底端的地方。所以建議將這個**放到計時器裡(settimeout),大概延遲10ms就可以了。

div 給div加滾動條 div的滾動條設定

今天做了個例子 div 的滾動條問題 兩種方法 一 記住寬和高一定要設定噢,否則不成的 不過在不超出時,會有下面的滾動條,所以不是最好的選擇二 記住寬和高一定要設定噢,否則不成的 這樣比較好的是,在寬和高不超出時,只是一條線 三 說明 直接為div指定overflow屬性為auto即可,但是必須指定...

使用DIV的滾動條

所謂div滾動條,就是利用div標籤,在裡面嵌入css樣式表,加入overflow的屬性值,這樣,當div所規範的區域內的內容達到一定程式時,滾動條就派上用場。其功能大約是為了節約頁面空間,就是所謂的 縮地 了。看看效果如何吧,參考下面 face color 滑塊顏色 hightlight colo...

使用DIV的滾動條

所謂div滾動條,就是利用div標籤,在裡面嵌入css樣式表,加入overflow的屬性值,這樣,當div所規範的區域內的內容達到一定程式時,滾動條就派上用場。其功能大約是為了節約頁面空間,就是所謂的 縮地 了。看看效果如何吧,參考下面 face color 滑塊顏色 hightlight colo...