这不是错误,因为在 Win7 上,FF、Chrome、IE9 和 Safari 的行为是一致的。
我正在开发的应用程序是主机页面的第 3 方,因此 CSS 是不可变的。脚本尝试将新 div 与现有元素对齐。
- 身体位置:相对
- 页面顶部有一个H1
- H1 的边距似乎改变了计算主体 0,0 的位置 - 即使主体上的背景一直延伸到边缘,并且它的 offsetTop 属性报告为 0
- 在正文上设置边框可以解决问题 - 看起来很奇怪,但在浏览器中是一致的?(不是一个可行的解决方案)
- 删除 H1 边距可以解决问题(不是可行的解决方案)
此处示例,对复制每个案例的 JS 进行了注释:http:
//codepen.io/anon/pen/EGvlb
我不认为这是 jQuery 的错误 - 它似乎归结为 H1 边距和 body 元素之间的合法关系?
$(function(){
/* Setting body to position:relative breaks offset()
because H1 margin moves body down */
$(document.body).css({position: "relative"});
/* Strange: putting a border on body fixes things? */
//$(document.body).css({border: "1px solid #000"});
/* Removing H1 margin removes problem */
//$("h1").css({margin: 0});
$("#overlay").css({
left: $("#existing").offset().left,
top: $("#existing").offset().top
})
});