如何确定一个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