javascript - <body> 元素上的 jQuery.offset() 提供了错误的 "top"值

标签 javascript jquery html css

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;\">&nbsp;</div>");

请注意,div 必须有内容才能工作。

http://jsfiddle.net/SCGdZ/7/

关于javascript - <body> 元素上的 jQuery.offset() 提供了错误的 "top"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14151003/

相关文章:

javascript - NodeJS从缓冲区解码字符串返回多行字符串

javascript - 在通过 AJAX 传递给 JavaScript 函数的 HTML 字符串中插入 PHP 变量?

html - 带有图像和徽章的 li 元素

html - 将一行内的 div 移动到中心

javascript - vuejs中简化数据和方法

javascript - 更新网页的一部分而不刷新

JavaScript FileReader 海量结果

javascript - 如何检测javascript中的数据属性

c# - javascript : json object with arrays serialized for use in . NET MVC 操作

javascript - 如何在 javaScript 函数中检查 null?