scrollTop設置后一直為0的解決方案(最全)


近期在業務中要實現keep-alive記住滾動條位置,發現scrollTop一直為0,排除各個組件的問題后仍未找到解決辦法,最后考慮到是css的問題。

mounted() {
    //一開始使用的@scroll綁定在container上沒有觸發,后來發現使用這種方法有效
    window.addEventListener('scroll', this.scroll, true)
},
methods: {
    //封裝的兼容性方法
    scroll() {
      //獲得頁面向左、向上卷動的距離
      function getScroll() {
        return {
          left:
            window.pageXOffset ||
            document.documentElement.scrollLeft ||
            document.body.scrollLeft ||
            0,
          top:
            window.pageYOffset ||
            document.documentElement.scrollTop ||
            document.body.scrollTop ||
            0
        };
      }
      //這里的this.$nextTick一定要有
      this.$nextTick(() => {
        //這里是外層container
        const container = this.$el.querySelector('.container')
        if (container) {
          //正常獲取scrollTop
          console.log(this.$el.querySelector('.container').scrollTop);
        }
      })
    }
}
.container {
  /* 這兩個是必須要有的,不要寫成overflow-y:auto; */
  overflow-y: scroll;
  height: 100%;
}

如有不足歡迎指正


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM