【问题标题】:Absolute positioning after a table not working?表不工作后的绝对定位?
【发布时间】:2017-01-03 06:56:41
【问题描述】:

我有一个简单的问题,我认为我遗漏了一些明显的东西,但找不到任何东西来理解这种行为。我有一个表,然后是一个 p 标签和一个 div 标签。所有同级标签都是默认定位的。只有最后一个 div 中的 inner-div 具有绝对位置。我认为内部 div 中的绝对位置将相对于它的外部 div (id='outer') 绝对定位。

因此,我希望显示内容按垂直顺序包括表格、Text1,最后是 Text2。这不是正在发生的事情。表格按预期显示,文本 1 也按预期显示在表格之后。但是,文本 2 显示在表格顶部,因为它从正文标记(或最外层标记)获取绝对位置。为什么?如何让 Text2 在 Text1 之后定位。我需要绝对定位 Text2 是有原因的。删除 div (id='inner') 上的绝对定位不是一种选择。那么,如何解决这个问题呢?

  <table border="1" style="border-collapse:collapse;">
      <tr>
        <th>Header 1</th>
      </tr>
      <tr>
        <td >09/12/2013 12:41 pm</td> 
      </tr>
  </table>
  <p style="display:block;">Text1</p>
  <div id="outer">
    <div id="inner" style="display:block;position:absolute;top:30px;">Text2</div>
  </div>

【问题讨论】:

    标签: html css html-table absolute


    【解决方案1】:

    由于您使用的是绝对位置,因此会从 DOM 中取出并搜索新的包含块:

    定位框的包含块由最近的定位祖先建立

    如果您没有使用任何 position 值设置父级,则 div 处于关闭状态并采用与另一个父级相关的值。

    将位置设置为外部div。

    <div id="outer" style="position:relative">
      <div id="inner" style="display:block;position:relative;top:30px;">Text2</div>
    </div>
    

    建议尝试在 CSS 文件中处理您的样式

    【讨论】:

    • 好的!谢谢!!!同样的答案,但没有解释也更早出现。现在它晶莹剔透。我对最近定位的祖先有所了解,但不知道如果没有为其设置位置,则会在寻找最近的祖先时跳过它。
    • 注意不仅仅是 position:relative 使工作成为父母,它还可以与 absolutefixed @Samir 等其他价值一起使用
    【解决方案2】:

    你添加 position:relative 到 #outer div 了吗?

    【讨论】:

    • 你是对的!在我这样做之后它起作用了。我赞成您的回答,但在接受答案之前,我想了解一下,所以我知道它适用于所有情况。相对意味着相对于它在正常流程中的位置。由于我没有指定任何其他位置(左、上),为什么使外部 div 相对有区别?您的解释将消除很多困惑。在这个问题出现之前,我以为我很了解定位。再次感谢。
    • 绝对元素相对于第一个没有静态定位的父元素定位(位置属性的默认值)。如果您没有这样的父元素,则将其定位到窗口。希望清楚:)
    【解决方案3】:

    因为你把position:absolute;

    代码在这里:

    <table border="1" style="border-collapse:collapse;">
          <tr>
            <th>Header 1</th>
          </tr>
          <tr>
            <td >09/12/2013 12:41 pm</td> 
          </tr>
      </table>
      <p style="display:block;">Text1</p>
      <div id="outer" style="position:relative">
        <div id="inner" style="display:block;top:30px;">Text2</div>
      </div>
    

    您可以将position:relative 用于“外部”div 或“内部”div。

    【讨论】:

    • 元素的绝对位置总是从最近的 div 开始定位,而不是从 body 的“顶部”开始。或者我明白了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 2014-08-30
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多