fiddle 是 HERE (记录到控制台)
情况是当页面以 <H1>
开头时其 margin-top 大于 <body>
上的边距。
这会导致 <body>
尚未被推到页面下方$('body').offset().top
保持设置为<body>
的边距顶部。这当然会导致我的调试元素(突出显示元素的位置)不正确,因为主体的虚拟元素现在位于错误的位置。
奇怪的是 $(elem).offset()
的其余部分对于 <body>
的任何后代,值都是正确的。
对于使用 while 循环手动检查 body 的递归第一个子级的 margin-top 的问题是否有解决办法?
注意到 Safari 6 上的问题,但我怀疑我也会在 Chrome 上找到它。
最佳答案
使用偏移量加上 html
的高度差可能会起作用。元素减去 body
元素。
console.log("body.offset().top = "+ ($('html').offset().top + $('html').height() - $('body').高度()));
更新:此解决方案仅在页面上没有 margin-bottom 时才有效。
您还可以在页面底部添加一个清晰的 div。
$('body').append("<div style=\"clear: all;\"> </div>");
请注意,div 必须有内容才能工作。
关于javascript - <body> 元素上的 jQuery.offset() 提供了错误的 "top"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14151003/