位置绝对但相对于父级

Bla*_*dow 403 html css

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

示例html:

<div id="father">
   <div id="son1"></div>
   <div id="son2"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

Dom*_*nic 717

#father {
   position: relative;
}

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

#son2 {
   position: absolute;
   bottom: 0;
}
Run Code Online (Sandbox Code Playgroud)

这工作,因为position: absolute意味着类似"使用top,right,bottom,left自己关于谁拥有最近的祖先定位position: absoluteposition: relative".

所以我们做#fatherposition: relative,和孩子们position: absolute,然后使用topbottom给孩子定位.

  • @ mathguy54因为规范说绝对定位的元素相对于第一个*定位*父元素定位,这意味着任何父元素的位置值都不是`static`. (27认同)
  • 为什么是`#father {position:relative; }`需要? (10认同)
  • 需要为他里面的人改变“位置规则”。 (5认同)

Bri*_*haw 25

div#father {
    position: relative;
}
div#son1 {
    position: absolute;
    /* put your coords here */
}
div#son2 {
    position: absolute;
    /* put your coords here */
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您需要调整父级和子级的大小怎么办? (2认同)

pet*_*gus 7

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

#father {
   position: relative;
}

#son1 {
   position: absolute;
   top: 100%;
}
Run Code Online (Sandbox Code Playgroud)

工作演示Codepen


ana*_*nam 6

如果您没有给父母任何职位,那么默认情况下需要static.如果您想了解这种差异,请参阅此示例

例1 ::

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

   #mainall
{

    background-color:red;
    height:150px;
    overflow:scroll
}
Run Code Online (Sandbox Code Playgroud)

这里父类没有位置,因此元素根据主体放置.

例2 ::

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

#mainall
{
    position:relative;
    background-color:red;
    height:150px;
    overflow:scroll
}
Run Code Online (Sandbox Code Playgroud)

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