【问题标题】:Why is my position:absolute <div> not positioned in relation to its parent?为什么我的 position:absolute <div> 没有相对于其父级定位?
【发布时间】:2013-08-21 09:40:23
【问题描述】:

我了解,如果我将具有相对位置的外部 div 包裹在具有绝对位置的 div 周围,那么内部 div 的绝对定位将相对于外部 div (duh)。

但是当我这样做时:

<div class="outer">
  <div class="inner"> </div>
</div>

CSS:

 .outer {
 margin: 0 auto;
 padding: 20px;
 width: 700px; }

.inner {
position: absolute;
text-decoration: none;
cursor: pointer; 
bottom: 20px;
left: 5px;}

它使内部与浏览器窗口对齐,而不是相对 div!我对这个简单的概念感到非常困惑,我以前能够做这种事情,但我一定做错了什么。

这是完整的 jsfiddle 供您查看:http://jsfiddle.net/DDYUK/1/

【问题讨论】:

  • "它使内部与浏览器窗口对齐,而不是相对的 div!" - 什么相对&lt;div&gt;&lt;div class="outer"&gt; 没有 position:relative;
  • 对我来说,一个“助记符”是“绝对是相对于最近的相对父母”。具有绝对定位的元素会将自身定位在具有“相对”位置的最近容器内的指定位置。请注意,这个具有相对定位的容器将保持其自然流动。

标签: css


【解决方案1】:

.outer 从未被赋予 CSS 属性 position:relative

.outer { 
    position: relative;
    margin: 0 auto; 
    padding: 20px; 
    width: 700px; 
}

【讨论】:

  • 啊,我以为相对是默认的!我不知道我是怎么在 css 课上错过的 >_> 感谢您对菜鸟的友善,这也适用于每个人!
【解决方案2】:

如果您不将position:relative; 应用于.outer div,它将默认为position:static。绝对定位的 div 将相对于相对定位的最近的父级定位。如果没有,它将相对于页面本身定位。

【讨论】:

    【解决方案3】:

    更新csshere fiddle demo

    我在你的 jsfiddle 中更新

    在外部 div 中使用相对

    .twitter-box {
      margin: 0 auto;
        position:relative;
      padding: 20px;
      width: 700px; }
    
      .twitter-box p {
        text-decoration: none;
        display: inline;
        position: absolute;
        margin-top: 69px; }
    
      .twitter-box img {
        height: 150px;
        width: 150px;
        text-align: center;
        margin: 0 auto; }
    
      .twit {
        position: absolute;
        text-decoration: none;
        cursor: pointer; 
        bottom: 20px;
        left: 5px;}
    

    【讨论】:

    • 您的回答实际上并没有指出 OP 的误解是什么,而且您的代码似乎与问题中的代码完全不同。
    • 啊!是的,我明白了,抱歉我没有看过 OP 的小提琴。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多