2009-10-08 33 views
0

我有两个div一个在另一个之上。第二个绝对定位在它下面(绝对div在相对格)。Javascript位置两个元素在彼此顶部

我想将第二个div移到另一个div的顶部,所以它出现在中间。

这个过程是将DIV2的style.top设置为与DIV1相同,理论上它应该放置在DIV1的顶部。但迄今为止尝试失败。

绝对定位工作正常,因为放入值会正确移动它,但我认为我正在使用错误的方式获取DIV1的高度/顶部值。

想法?

我尝试这样做:

divLoading.style.top = divContent.style.top;

但它保持在原来的位置。

编辑:问题不是如何绝对/相对工作,但哪些JavaScript值是正确的使用。使用DIV2.style.top = DIV2.style.top - DIV1.clientHeight将它移动到顶端......但是clientHeight不正确,因为如果DIV1更改大小,它会向上移动DIV2。

编辑:offsetTop似乎为零。

+0

您可以提供您想要的屏幕截图这样我们可以得到一个更清晰的画面? – jerjer 2009-10-08 08:43:31

+0

不需要截图,在这种情况下,5或6行HTML和CSS就足够了。 – Duroth 2009-10-08 08:44:23

+0

试试这个,divLoading.style.top = divContent.offsetTop; – jerjer 2009-10-08 08:48:00

回答

1

一个绝对定位的div在一个相对定位的div里,默认情况下会'借用'它是相对父对象的顶部和左边位置。这意味着通过设置left:0; top:0,divs将共享相同的位置。

如果你想移动第二个div,你必须设置一个负值(即top: -200px)。顶部和左侧属性是相对于基准位置,而不是主体(除非div不在相对定位的父亲中,在这种情况下,主体是基准位置)

0

如果div1位于相对位置,则顶部和左侧的值将相对于正常流动中的位置移动div。所以style.top = 10会将它从正常位置向下移动10个像素。

如果位置是“绝对”,style.top = 10会将div从其相对位置的div向下移动10个像素(即,位置为relative的前一个元素,或者body

相关问题