欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue實(shí)現(xiàn)渲染數(shù)據(jù)后控制滾動(dòng)條位置(推薦)

 更新時(shí)間:2019年12月09日 15:59:46   作者:神奇的程序員  
這篇文章主要介紹了Vue實(shí)現(xiàn)渲染數(shù)據(jù)后控制滾動(dòng)條位置,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

需求場(chǎng)景如下:

實(shí)現(xiàn)了消息發(fā)送,如果容器內(nèi)消息過(guò)多,會(huì)出現(xiàn)滾動(dòng)條,最新的消息位于最底部,不能及時(shí)出現(xiàn)在可視區(qū)域內(nèi),此時(shí)就需要在渲染列表后,將滾動(dòng)條的位置定位到最底部。先來(lái)看看最終實(shí)現(xiàn)的效果

  

實(shí)現(xiàn)思路

  • 渲染完數(shù)據(jù)后,通過(guò)refs對(duì)象獲取消息容器的實(shí)際高度
  • 將滾動(dòng)條的設(shè)置到最底部

實(shí)現(xiàn)過(guò)程

sendMessage: function (event) {
  // 數(shù)據(jù)渲染
  this.senderMessageList.push(thisSenderMessageObj);
  // 改變滾動(dòng)條位置
  this.messagesContainerTimer = setTimeout(()=>{
    this.$refs.messagesContainer.scrollTop = this.$refs.messagesContainer.scrollHeight;
    console.log("當(dāng)前滾動(dòng)條位置:"+this.$refs.messagesContainer.scrollTop);
    console.log("當(dāng)前可滾動(dòng)區(qū)域容器的高度:"+this.$refs.messagesContainer.scrollHeight);
    // 清理定時(shí)器
    clearTimeout(this.messagesContainerTimer);
  },0);
}

踩坑記錄

直接設(shè)置滾動(dòng)條的位置

數(shù)據(jù)渲染完成后直接獲取元素的真實(shí)高度,設(shè)置滾動(dòng)條的位置,講道理好像沒(méi)什么毛病,結(jié)果滾動(dòng)條的高度沒(méi)有預(yù)想的渲染。問(wèn)題原因:數(shù)據(jù)渲染完成后,Vue此時(shí)還沒(méi)有渲染DOM元素,設(shè)置的滾動(dòng)條高度還是之前的容器高度。

sendMessage: function (event) {
  // 數(shù)據(jù)渲染
  this.senderMessageList.push(thisSenderMessageObj);
  // 改變滾動(dòng)條位置
  this.$refs.messagesContainer.scrollTop = this.$refs.messagesContainer.scrollHeight;
  console.log("當(dāng)前滾動(dòng)條位置:"+this.$refs.messagesContainer.scrollTop);
  console.log("當(dāng)前可滾動(dòng)區(qū)域容器的高度:"+this.$refs.messagesContainer.scrollHeight);
}

正確的改變方式: 使用setTimeout(),將DOM操作改為異步。

this.messagesContainerTimer = setTimeout(()=>{
  this.$refs.messagesContainer.scrollTop = this.$refs.messagesContainer.scrollHeight;
  console.log("當(dāng)前滾動(dòng)條位置:"+this.$refs.messagesContainer.scrollTop);
  console.log("當(dāng)前可滾動(dòng)區(qū)域容器的高度:"+this.$refs.messagesContainer.scrollHeight);
  // 清理定時(shí)器
  clearTimeout(this.messagesContainerTimer);
},0);

總結(jié)

以上所述是小編給大家介紹的Vue實(shí)現(xiàn)渲染數(shù)據(jù)后控制滾動(dòng)條位置,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • vue實(shí)現(xiàn)點(diǎn)擊出現(xiàn)操作彈出框的示例

    vue實(shí)現(xiàn)點(diǎn)擊出現(xiàn)操作彈出框的示例

    這篇文章主要介紹了vue實(shí)現(xiàn)點(diǎn)擊出現(xiàn)操作彈出框的示例,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下
    2020-11-11
  • vue3的reactive賦值問(wèn)題解決

    vue3的reactive賦值問(wèn)題解決

    vue3中直接對(duì)reactive聲明的變量本身進(jìn)行賦值是無(wú)效的,本文主要介紹了vue3的reactive賦值問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • 基于Vue2實(shí)現(xiàn)動(dòng)態(tài)折扣表格

    基于Vue2實(shí)現(xiàn)動(dòng)態(tài)折扣表格

    這篇文章主要為大家詳細(xì)介紹了如何基于Vue2實(shí)現(xiàn)動(dòng)態(tài)折扣表格,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • 講解vue-router之命名路由和命名視圖

    講解vue-router之命名路由和命名視圖

    這篇文章主要介紹了講解vue-router之命名路由和命名視圖,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • VUE中的filters過(guò)濾器使用方法

    VUE中的filters過(guò)濾器使用方法

    這篇文章主要介紹了VUE中的filters過(guò)濾器使用方法,文章主要通過(guò)描述全局過(guò)濾器、全局過(guò)濾器之單一掛載、全局過(guò)濾器之批量掛載?、組件過(guò)濾器展開(kāi)內(nèi)容,具有一定的參考價(jià)值組要的小伙伴可以參考一下
    2022-03-03
  • Vue nextTick延遲回調(diào)獲取更新后DOM機(jī)制詳解

    Vue nextTick延遲回調(diào)獲取更新后DOM機(jī)制詳解

    這篇文章主要為大家介紹了Vue nextTick延遲回調(diào)獲取更新后DOM機(jī)制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • vue如何設(shè)置輸入框只能輸入數(shù)字且只能輸入小數(shù)點(diǎn)后兩位,并且不能輸入減號(hào)

    vue如何設(shè)置輸入框只能輸入數(shù)字且只能輸入小數(shù)點(diǎn)后兩位,并且不能輸入減號(hào)

    這篇文章主要介紹了vue如何設(shè)置輸入框只能輸入數(shù)字且只能輸入小數(shù)點(diǎn)后兩位,并且不能輸入減號(hào)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • vue實(shí)現(xiàn)目錄樹(shù)結(jié)構(gòu)

    vue實(shí)現(xiàn)目錄樹(shù)結(jié)構(gòu)

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)目錄樹(shù)結(jié)構(gòu),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Vue包大小優(yōu)化的實(shí)現(xiàn)(從1.72M到94K)

    Vue包大小優(yōu)化的實(shí)現(xiàn)(從1.72M到94K)

    這篇文章主要介紹了Vue包大小優(yōu)化的實(shí)現(xiàn)(從1.72M到94K),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Vue 中頁(yè)面?zhèn)髦档亩喾N方式小結(jié)

    Vue 中頁(yè)面?zhèn)髦档亩喾N方式小結(jié)

    本文主要介紹了Vue 中頁(yè)面?zhèn)髦档亩喾N方式小結(jié),主要包括路由傳參、Vuex 狀態(tài)管理、Props 屬性和事件傳遞數(shù)據(jù)這幾種,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10

最新評(píng)論