vue scrollTop 無法賦值

xiaosi發表於2019-02-16

遇到問題

container.scrollTop 一直為0不能賦值

  watch: {
    historyList () {
      this.$nextTick(() => {
        const container = this.$el.querySelector(`.scrolldivmain`)
        console.log(container.scrollHeight)
        console.log(container.scrollTop)
        this.$refs.scrolldiv.scrollTo(0, container.scrollHeight + `px`)
        container.scrollTop = container.scrollHeight
        container.scrollTop(0, container.scrollHeight)
        console.log(container.scrollTop) // container.scrollTop 一直為0
      })
    }
  }

注意點

  • 確定下滾動條是在哪裡顯示的
    有個方法判斷下:
    window.addEventListener(`scroll`, () => {
        var scrollTop = this.$el.querySelector(`.scrolldivmain`)
        // console.log(scrollTop.scrollHeight)
        console.log(scrollTop.scrollTop) // 檢視列印的值是否有變化 如果有 則說明滾滾動條在這個標籤中
        // scrollTop.scrollTop = scrollTop.scrollHeight // 可以嘗試下 滾動滾動條。一直在底部則可以設定成功
    }, true)

解決方案

需要用到的地方 呼叫this.scrollToBottom()即可

<!--element-ui-->

<el-main class="scrolldivmain">
    some code
</el-main>
methods: {
  // 滾動到底部
    scrollToBottom () {
      this.$nextTick(() => {
        setTimeout(() => {
          var scrollTop = this.$el.querySelector(`.scrolldivmain`)
          scrollTop.scrollTop = scrollTop.scrollHeight
        }, 13)
      })
    }
}

參考文章

vue 無法監聽scroll事件
參考vue-chat程式碼

相關文章