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