绝对位置,但相对于父位置


457

我在另一个div内有两个div,我想使用css将一个子div放在父div的右上角,另一个子div放在父div的底下。即,我想对两个子div使用绝对定位,但是相对于父div而不是页面定位它们。我怎样才能做到这一点?

范例html:

<div id="father">
   <div id="son1"></div>
   <div id="son2"></div>
</div>

您希望son1在父亲的右上角,但是son2在底部的哪个位置?左下,右下还是中下?
2012年

1
在这种情况下,您需要设置position:相对于父元素,以及position:absolute到子元素。在第一个子元素上,应将top:0和right:0放置在父元素的右上角。在第二个子元素上,应将bottom:0放置在父元素的底部。kolosek.com/css-position-relative-vs-position-absolute这里有一篇很棒的文章,详细 解释了相对和绝对位置。
Nesha Zoric '18

Answers:


812
#father {
   position: relative;
}

#son1 {
   position: absolute;
   top: 0;
}

#son2 {
   position: absolute;
   bottom: 0;
}

这工作,因为position: absolute手段类似“使用toprightbottomleft来定位自己相对于谁拥有最近的祖先position: absoluteposition: relative”。

因此,我们使#fatherhave position: relative和子代都有position: absolute,然后使用topbottom定位子代。


16
为什么#father { position: relative; }需要?
joshreesjones

4
要求为他内部的人更改“位置规则”。
BlaShadow

35
@ mathguy54因为规范说绝对定位的元素是相对于第一个定位的父元素定位的,这意味着任何位置值不为的父元素static
2014年

这样的情况怎么样:父亲是相对的,它的高度是100%,如何将son和son2定位在,分别说父亲的高度的20%和70%?
Rossitten


27
div#father {
    position: relative;
}
div#son1 {
    position: absolute;
    /* put your coords here */
}
div#son2 {
    position: absolute;
    /* put your coords here */
}

1
如果您需要与孩子一起调整父母的尺寸怎么办?
FrenkyB

10

如果有人想将孩子div直接放在父母的下面

#father {
   position: relative;
}

#son1 {
   position: absolute;
   top: 100%;
}

工作演示Codepen


6

如果您不给父母任何职位,那么默认情况下 static。如果您想了解这种差异,请参考此示例

示例1:

http://jsfiddle.net/Cr9KB/1/

   #mainall
{

    background-color:red;
    height:150px;
    overflow:scroll
}

在此,父类没有位置,因此根据正文放置元素。

示例2:

http://jsfiddle.net/Cr9KB/2/

#mainall
{
    position:relative;
    background-color:red;
    height:150px;
    overflow:scroll
}

在此示例中,父级具有相对位置,因此元素绝对位于相对父级内部。


而且,如果您没有#mainall {height:150px} ...呢?我的意思是,如果mainall具有动态高度?
艾伯特·卡塔拉(AlbertCatalà)2015年

那么您的浮动元素将相对于页面(和CSS)加载时父元素的位置。如果您想在页面加载后进行更新,请使用javascript-clientX和clientY是一个不错的起点
Abraham Brookes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.