2010-04-08 181 views
1

我有两个div双胞胎元素(即它们的尺寸和内容相同)。我想将这些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 + 16像素)以下。

我知道,偏移()给出相对位置的文件,并位置:相对于身体元素绝对套位置,但对于体偏移补偿()没有太大帮助(我得到8像素偏移,等于利润):

offset.top -= $('body').offset().top; 
offset.left -= $('body').offset().left; 

此外,补偿利润(如果它们不同的是偏移()没有帮助,因为它们被设置为8px)。

有人知道我在做什么错吗?

更新:看看here - 我在FireFox 3.6.3和Opera 10.10中得到了相同的结果。

+1

你能演示一个演示吗? – SLaks 2010-04-08 11:56:22

+0

不知道这是否是你想要的,但尝试添加一些Z-index:1;(2,3等)属性到您的CSS .. – Kyle 2010-04-08 12:01:02

回答

1

我怀疑你有一些基于样式表中的类/名称/元素类型应用的CSS规则。我建议你尝试通过javascript将元素上的margin/padding设置为0。您可能还想使用WebDeveloper或FireBug,并在重新定位后检查元素上的计算样式,以查看正在应用哪些样式以及从哪里开始。

+0

我创建空白页,仍然设法重现该问题。但是当我切换到定位div的子元素(即输入)时,一切都开始正常工作。我仍然不知道为什么,但我没有时间进一步调查。 – 2010-04-11 21:19:26