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

Javascript scrollHeight大于clientHeight,即使没有滚动内容,javascript,css,Javascript,Css,我有一段JS代码,用于确定是否存在垂直滚动条,并将CSS类应用于元素。没什么大不了的。 让我困惑的是,它似乎在做与我理解它应该做的相反的事情。这不是一个问题,除非它是一个bug并且在将来得到修复。 守则: if (document.body.scrollHeight > document.body.clientHeight) { var d = document.getElementById("footer").className = "footernoscroll"; } 我的

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

if (document.body.scrollHeight > document.body.clientHeight) {
    var d = document.getElementById("footer").className = "footernoscroll";
}
我的理解是,如果有垂直滚动条,它将应用该类,但是如果没有滚动条,它似乎正在应用该类。我是否正确解释了这一点,代码的行为是否奇怪,或者我的解释是否错误

EDIT:我想我应该添加,如果我反转操作符,效果将被反转,它将使用语句的
else
部分

scrollHeight值等于元素在不使用垂直滚动条的情况下适应视点中所有内容所需的最小clientHeight

摘自这里:


因此,如果没有滚动条,这意味着值是相同的,并且当有滚动条时,
scrollHeight
更大。

确保您的身体是窗口高度的100%。如果没有,则
clientHeight
值将是
body
中项目的组合高度,而不是整个窗口高度,而
scrollHeight
将是窗口的整个高度

下面是一个显示它工作的小提琴(打开开发工具和视图控制台):



scrollHeight和clientHeight应该是相同的,如果主体是全高或更高,对吗?尝试
window.innerHeight
document.body.scrollHeight>window.innerHeight
I添加的
高度:100%到主体,这似乎没有改变什么,尽管你的JS小提琴可以工作。不确定发生了什么。@Lockedonhoe它也需要在
html
上。我在发布后就意识到了这一点,决定对它进行测试,最后通过将操作符更改为

html, body {
    height: 100%;
    padding: 0;
    margin: 0;
}