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/

http://20thcenturyinterior.com/test/test.html

这看起来像是一个简单的四舍五入问题。 offset向下取整,scroll向上取整,所以相差1。你可以简单地解决这个问题:

if (Math.abs(offset - scroll) <= 1) {
    $(".myDiv").css("height", (offset - 155) + "px");
} else {
    $(".myDiv").css("height", "");
}

这是一种解决方法,正确的方法是在任何情况下都使用 CSS。您可以针对您的具体问题提出另一个问题,标记为 CSS。