即使没有滚动内容,scrollHeight 也大于 clientHeight

Loc*_*hoe 8 javascript css

我有一段 JS 代码,用于确定是否存在垂直滚动条并将 CSS 类应用于元素。没什么大不了的。让我困惑的是它似乎在做与我理解的它应该做的相反的事情。这不是问题,除非它是一个错误并且将来会修复。
代码:

if (document.body.scrollHeight > document.body.clientHeight) {
    var d = document.getElementById("footer").className = "footernoscroll";
}
Run Code Online (Sandbox Code Playgroud)

我的理解是,如果有垂直滚动条,它将应用该类,但如果没有滚动条,它似乎正在应用该类。我是否正确解释了这一点,并且代码表现得很奇怪,或者我的解释是错误的?

编辑:我想我应该添加,如果我反转运算符,效果将反转,并且它将使用else语句的一部分。

Ale*_*lex 5

确保您的身体 100% 位于窗户高度。如果没有这个,那么该clientHeight值将是其中项目的组合高度body,而不是整个窗口高度,而scrollHeight 是窗口的完整高度。

这是一个显示它工作的小提琴(打开开发工具和查看控制台):http://jsfiddle.net/alexcoady/c53d7q27/1/

html, body {
    height: 100%;
    padding: 0;
    margin: 0;
}
Run Code Online (Sandbox Code Playgroud)

clientHeight 文档
scrollHeight 文档

  • 我在发布后就意识到了这一点,决定对其进行测试,最后我通过将运算符更改为“<=”来使其正常工作,这应该是脚本按预期工作的方式。谢谢。 (2认同)