如何确定一个div是否滚动到底部?

如何在不使用jQuery或任何其他JavaScript库的情况下确定是否将具有垂直滚动条的div滚动到底部?

我的问题不是如何滚动到底部。 我知道如何做到这一点。 我想确定div是否已经滚动到底部了。

这不起作用:

if (objDiv.scrollTop == objDiv.scrollHeight) 

你很靠近使用scrollTop == scrollHeight

scrollTop指的是滚动位置的顶部,这将是scrollHeight - offsetHeight

你的if语句应该是这样的(不要忘记使用triple equals):

 if( obj.scrollTop === (obj.scrollHeight - obj.offsetHeight)) { } 

编辑:更正了我的答案,是完全错误的

如果一个元素在滚动结束时返回true,否则返回false。

 element.scrollHeight - element.scrollTop === element.clientHeight 

Mozilla开发者networking

为了在考虑边界,水平滚动条和/或浮点像素计数的可能性时得到正确的结果,应该使用…

 el.scrollHeight - el.scrollTop - el.clientHeight < 1 

注意:如果你想得到正确的结果,你必须使用clientHeight而不是offsetHeight。 只有当el没有边界或水平滚动条时,offsetHeight才会给你正确的结果

对这个派对迟了一点,但以上答案似乎没有什么特别好的工作,当…

  • 显示比例适用于超高清显示的操作系统
  • 缩放/缩放应用于浏览器

为了适应所有可能性,您需要将计算的滚动位置进行四舍五入:

 Math.ceil(element.scrollHeight - element.scrollTop) === element.clientHeight