Html 如何处理只包含绝对定位子元素的元素?

Html 如何处理只包含绝对定位子元素的元素?,html,css,Html,Css,我有一个包含2个绝对定位的标题和段落元素的框,我正在试验如何将文本居中,并尝试使用此方法进行修补 现在这里的问题不是关于如何定位文本的方法,因为这不是我的问题,所以你不应该解决这个问题 我的问题是这个 如何使父元素包含其子元素 由于父元素包含绝对定位的元素,这意味着子元素不在流中,而父元素将折叠 现在这是一个令人震惊的现象,因为我发现以同样的方式用于浮点数的包含/包装方法根本不起作用 Clearfix方法 清算div法 溢出方法 它们根本不起作用 唯一有效的方法是“显式高度”方法,它效率很低,不

我有一个包含2个绝对定位的标题和段落元素的框,我正在试验如何将文本居中,并尝试使用此方法进行修补

现在这里的问题不是关于如何定位文本的方法,因为这不是我的问题,所以你不应该解决这个问题

我的问题是这个

如何使父元素包含其子元素

由于父元素包含绝对定位的元素,这意味着子元素不在流中,而父元素将折叠

现在这是一个令人震惊的现象,因为我发现以同样的方式用于浮点数的包含/包装方法根本不起作用

  • Clearfix方法
  • 清算div法
  • 溢出方法
  • 它们根本不起作用

    唯一有效的方法是“显式高度”方法,它效率很低,不可预测(可能在较小的窗口上破裂),而且不流动

    这是一个简单的、固定宽度的圆角框,它是“h1”和“p”元素,我想用上面提到的方法居中

    示例CSS

    body {
        margin: 8px;
        padding: 0;}
    
    .box {
        margin: 0;
        padding: 0;
        width: 335px; 
        position: relative;
        background: #40331A url(bottom.gif) no-repeat left bottom;}
    
    .inner {
        background: url(top.gif) no-repeat left top;}
    
    .box h2 {
        width: 180px;
        height: 27px;
        top: 50%;}
    
    .box p {
        width: 120px;
        height: 20px;
        top: 50%;}
    
    .box h2, .box p {
        margin: 0;
        position: absolute;}
    
    样本标记

    <div class="box">
     <div class="inner">
      <h2>This is a heading.</h2>
      <p>This is a paragraph.</p>
     </div>
    </div>
    
    
    这是一个标题。
    这是一段

    所以我的问题是


    有没有简单的方法使父元素包含其绝对定位的子元素

    绝对定位元素的全部要点是,这些元素的父元素应该像这些元素从未出现过一样进行布局。如果希望父元素的布局考虑其子元素,请不要绝对定位它们

    由于除了
    position:absolute
    之外,您没有包含任何相关属性,因此这似乎是完全多余的,因为绝对定位的元素默认为其静态位置。只需删除该声明。再简单不过了

    这些方法都不起作用的原因是它们是为浮动而设计的,而绝对定位的元素不是浮动:

  • 你不能真正“清除”任何不是浮动的东西
  • 同上
  • 浮动的原因设置
    溢出
    之所以有效,是因为浮动参与块布局的方式导致的,这不适用于绝对定位的元素。这到底意味着什么超出了这个问题的范围,但请仔细阅读块格式上下文

  • 我在试验,我刚刚发现,谷歌上也没有结果。我只是需要一种方法,让家长容纳自己的孩子,因为我觉得这在将来可能会有用,仅此而已。你怎么能指望一个盒子里装着你刚从盒子里拿出来的东西?这就是为什么我要告诉你把它留在盒子里。但是如果我不使用position:absolute,那么我就不能使元素居中。