offsetHeight !== scrollHeight onResize,有时
offsetHeight !== scrollHeight onResize, sometimes
我正在检查和比较 body.offsetHeight 与 body.scrollHeight。
放大 Window 大小总是抛出相同的值,但缩小 Window 有时会导致 "jumping" 值,所以我在 Div 上闪烁.
在 Chrome 45 / 和 Firefox 上测试。
var body = document.body,
html = document.documentElement,
offset,
scroll;
$(window).resize(function() {
offset = Math.max(body.offsetHeight, html.offsetHeight);
scroll = Math.max(body.scrollHeight, html.scrollHeight);
if (offset === scroll) {
$(".myDiv").css("height", (offset - 155) + "px");
} else {
$(".myDiv").css("height", "");
}
}).trigger("resize");
那么这里发生了什么?
有人可以向我解释一下我做错了什么吗?
编辑:
说明我的问题的在线演示:
http://jsfiddle.net/magic77/41bq62xs/
这看起来像是一个简单的四舍五入问题。 offset
向下取整,scroll
向上取整,所以相差1
。你可以简单地解决这个问题:
if (Math.abs(offset - scroll) <= 1) {
$(".myDiv").css("height", (offset - 155) + "px");
} else {
$(".myDiv").css("height", "");
}
这是一种解决方法,正确的方法是在任何情况下都使用 CSS。您可以针对您的具体问题提出另一个问题,标记为 CSS。
我正在检查和比较 body.offsetHeight 与 body.scrollHeight。
放大 Window 大小总是抛出相同的值,但缩小 Window 有时会导致 "jumping" 值,所以我在 Div 上闪烁. 在 Chrome 45 / 和 Firefox 上测试。
var body = document.body,
html = document.documentElement,
offset,
scroll;
$(window).resize(function() {
offset = Math.max(body.offsetHeight, html.offsetHeight);
scroll = Math.max(body.scrollHeight, html.scrollHeight);
if (offset === scroll) {
$(".myDiv").css("height", (offset - 155) + "px");
} else {
$(".myDiv").css("height", "");
}
}).trigger("resize");
那么这里发生了什么? 有人可以向我解释一下我做错了什么吗?
编辑: 说明我的问题的在线演示: http://jsfiddle.net/magic77/41bq62xs/
这看起来像是一个简单的四舍五入问题。 offset
向下取整,scroll
向上取整,所以相差1
。你可以简单地解决这个问题:
if (Math.abs(offset - scroll) <= 1) {
$(".myDiv").css("height", (offset - 155) + "px");
} else {
$(".myDiv").css("height", "");
}
这是一种解决方法,正确的方法是在任何情况下都使用 CSS。您可以针对您的具体问题提出另一个问题,标记为 CSS。