如何判断div是否滚动到底部?

Bjo*_*orn 62 javascript scroll scrollbar

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

我的问题不是如何滚动到底部.我知道该怎么做.我想确定div是否已经滚动到底部.

这不起作用:

if (objDiv.scrollTop == objDiv.scrollHeight) 
Run Code Online (Sandbox Code Playgroud)

Jam*_*ies 78

你很近用scrollTop == scrollHeight.

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

你的if语句应该是这样的(不要忘记使用三等于):

if( obj.scrollTop === (obj.scrollHeight - obj.offsetHeight))
{
}
Run Code Online (Sandbox Code Playgroud)

编辑:纠正了我的回答,完全错了

  • 这几乎可以工作,scrollHeight-offsetHeight与scrollTop的值不是很相似,但是在尝试你的代码之后,如果我需要这个差异少于5个像素,那么它就是我想要的行为. (4认同)
  • 这并不准确。需要考虑 obj.borderWidth (2认同)
  • 我更喜欢这个答案:http://stackoverflow.com/questions/5828275/how-can-i-use-jquery-to-check-if-a-div-is-scrolled-all-the-way-to-the -底部 (2认同)
  • `scrollTop`可以是非整数的,所以这需要一些容差(例如,`obj.scrollHeight - obj.offsetHeight - obj.scrollTop <1`)在所有情况下都可以工作.请参阅/sf/ask/407979281/ (2认同)

Emm*_*osu 7

如果元素位于其滚动的末尾,则返回true,否则返回false.

element.scrollHeight - element.scrollTop === element.clientHeight
Run Code Online (Sandbox Code Playgroud)

Mozilla开发者网络

  • 对我来说,使用 Chrome,其中元素是 document.body,这是行不通的。`document.body.scrollHeight` 和 `document.bodyclientHeight` 具有相同的值,因此表达式永远不会为真。 (3认同)

ser*_*0ne 7

这次聚会的时间不多,但上述答案似乎都没有特别好......

  • 显示缩放应用于UHD显示的OS
  • 缩放/缩放应用于浏览器

为了适应所有可能的情况,您需要对计算出的滚动位置进行舍入:

Math.ceil(element.scrollHeight - element.scrollTop) === element.clientHeight
Run Code Online (Sandbox Code Playgroud)


小智 6

为了在考虑诸如边框,水平滚动条和/或浮动像素数等可能性之类的事情时获得正确的结果,您应该使用......

el.scrollHeight - el.scrollTop - el.clientHeight < 1
Run Code Online (Sandbox Code Playgroud)

注意:如果要获得正确的结果,必须使用clientHeight而不是offsetHeight.仅当el没有边框或水平滚动条时,offsetHeight才会给出正确的结果