vue窗口无限滚动最下方,scrollTop一直为0无法设置解决

在写对话窗无限滚动的时候遇到无法滚动到底的问题
解决了很久才解决。

现在记录总结在这里

网上大多给的解决方案是
按照是否设置页面DTD
let scroll = document.getElementById(‘block’)//后面三种写法的基础

(1)document.Element.scrollTop = scroll.scrollHeight
(2)scroll.scrollTop = scroll.scrollHeight
或是
(3)document.body.scrollTop = scroll.scrollHeight来解决

这个解决方案肯定是没问题的,根据自己电脑不同情况,选择以上三种写法之一,能成功即可

在这个过程中有两个关键问题,如果不解决,上面写法再怎么正确也是无效的。

(1)是用getElementById方法取不到对应的元素
这个时候就要换vue中获取页面元素的方法,
这里举一个例子
let scroll = this.$refs[‘block’].wrap
用vue的ref获取或者$el.selector方法获取

(2)是setTimeout方法的问题

那个时间必须设置一下,我这里设置的是100,不然scrollTop永远是会设置失败为0的

那个this.$nextTick(() 也是必须的方法,按照下面这个来写就解决了!

下面就是正确的写法了

setTimeout(() => {
        this.$nextTick(() => {
          let scroll = this.$refs['block'].wrap // 获取对象
          scroll.scrollTop = scroll.scrollHeight
        })
      }, 100)
Logo

前往低代码交流专区

更多推荐