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

标签 javascript css

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

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

我的理解是,如果有垂直滚动条,它将应用该类,但如果没有滚动条,它似乎正在应用该类。我是否正确解释了这一点并且代码运行异常或者我的解释有误?

编辑: 我想我应该补充一点,如果我反转运算符,效果将被反转,它将使用语句的 else 部分。

最佳答案

确保您的 body 是窗口高度的 100%。如果你没有这个,那么 clientHeight 值将是 body 中元素的组合高度而不是整个窗口高度,而 scrollHeight 为窗口的全高。

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

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

clientHeight documentation
scrollHeight documentation

关于javascript - scrollHeight 大于 clientHeight,即使没有滚动内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30642367/

相关文章:

javascript - css遍历元素的方法

javascript - 沙盒Javascript

javascript - 还使用 jQuery 时如何处理 Javascript 错误?

javascript - 如何为游戏制作专业标签

javascript - 如何让 JavaScript 读取给定 ID 附加 CSS 的值

css - SCSS编译从CSS移除-webkit和-ms属性

javascript - req.body 在发布时返回空

javascript - 向上计数定时器没有设置错误

javascript - 如何在chrome中模拟Firefox环境

javascript - CSS3 转换导致非常奇怪的 window.scrollY 行为