父div的高度即使有有限高度的孩子也为零

Pra*_*ngh 56 css height parent-child css3

我有一个网站,其布局已在图表中显示.所述主体包括一个main container,该方法包括header,parent divfooter.所述parent div进一步包含若干child div如图所示.

网页布局

问题是所有的高度child div是有限的.但parent div除了儿童div之外什么都没有.所有子div都可见,但父div的高度显示为零.我也没有通过给出一些预先指定的值来修正父div的高度,因为如果将来孩子的数量增加可能会导致错误.

由于父div的大小为零而导致的问题是我的页脚div正在上升并与父div的内容冲突.这可以通过给出合适的margin-top来解决,但这不是我正在寻找的解决方案.

任何人都可以建议我某种方式,以便父div的高度根据存在的子div的高度自动改变.

如果我不清楚我的疑问,请发表评论!

VVV*_*VVV 86

好像你有一个clearfix类的案例.

所以我猜你是漂浮了孩子div,这就是为什么父div的高度是0.当你使用浮动时,父母不适应孩子的身高.

但是添加类'clearfix'(当然你需要在样式表中使用它)它会添加一个'.' 最后(当然看不见),你的父母将神奇地拥有正确的身高.

注意,它是跨平台的,兼容的IE6 +,Chrome,Safari,Firefox,你的名字!

.clearfix:after {
    content: ".";
    display: block;
    clear: both;
    visibility: hidden;
    line-height: 0;
    height: 0;
}

.clearfix {
    display: inline-block;
}

html[xmlns] .clearfix {
    display: block;
}

* html .clearfix {
    height: 1%;
}
Run Code Online (Sandbox Code Playgroud)


ban*_*aka 52

尝试将以下内容添加到样式表中:

#parentdiv:after { 
    content: " "; 
    display: block;
    clear: both;
} 
Run Code Online (Sandbox Code Playgroud)

正如代达罗斯在评论中所说,你可能会漂浮孩子们.如果是这样,上面的行修复它.

浮动事物时的问题是它们的父元素"忽略"它们.

上面的行创建并在#parentdiv中插入一个(伪)元素,该元素被向下推过所有浮动的div.然后,父div虽然忽略了浮动的子节点,但它不会忽略这个伪元素 - 按照它应该的行为,它会扩展为包含伪元素.现在,由于伪元素低于所有浮动的子元素,所以父div发生,或者更好,似乎也"包含"浮动的子元素 - 这正是你想要的.

  • 与其他答案结合后,您的答案和解释就很清楚了 (3认同)
  • 这应该是正确的答案。更加简洁明了。 (2认同)