我有两个 div 元素是双胞胎(即它们的尺寸和内容相同)。我想将这些div移动到另一个div上,以便它们的角落处于完全相同的坐标。我尝试做的是:
var offset = $('div#placeholder').offset();
$('div#overlay').css('position', 'absolute').css('left', offset.left + 'px').css('top', offset.top + 'px')
- 但这会使叠加层完全(或几乎完全符合子像素精度)在占位符下方16px(下方,即overlay_top = placeholder_top + 16px)。
我知道 offset()给出了相对于文档的位置,而 position:absolute 设置了相对于 body 元素的位置,但补偿 body offset()并没有多大帮助(我得到8px偏移,等于边距):
offset.top -= $('body').offset().top;
offset.left -= $('body').offset().left;
另外,补偿 body 边距(如果它们不同, offset()没有帮助,因为它们被设置为8px)。
有人知道我在这里做错了吗?
更新:查看here - 我在FireFox 3.6.3和Opera 10.10中得到了相同的结果。
答案 0 :(得分:1)
我怀疑你是否根据样式表中的类/名称/元素类型应用了一些CSS规则。我建议您尝试通过javascript将元素上的margin / padding设置为0。您可能还想使用WebDeveloper或FireBug,并在重新定位后检查元素上的计算样式,以查看正在应用的样式以及从哪里开始。