CSS:浮动div的高度为0

ari*_*rio 39 html css

我试图在另一个div内并排放置2个div,这样我就可以有2列文本,而外部div在它们周围绘制一个边框:

HTML

<div id="outer">
    <div id="left">
         ...
    <div id="right">
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

#outer{
    background-color:rgba(255,255,255,.5);
    width:800px;
}

#left{
    float:left;
}

#right{
    width:500px;
    float:right;
}
Run Code Online (Sandbox Code Playgroud)

但是,外部div注册的高度为0px,因此边框不会绕过其他div.如何让外部div识别其内部物体的高度?

Guf*_*ffa 91

这不是因为浮动div没有高度,这是因为浮动div不会影响父元素的大小.

您可以使用该overflow样式使父元素考虑浮动元素:

#outer { overflow: auto; }
Run Code Online (Sandbox Code Playgroud)

  • +1用于解释为什么会发生这种情况.为了获得技术,这会导致外部元素[为其浮动创建一个新的块格式化上下文](http://www.w3.org/TR/CSS2/visuren.html#block-formatting),因此它可以扩展包含它们. (7认同)
  • @airo:您可以尝试`overflow:hidden;`.只要没有为周围元素定义高度,通常无论你使用什么溢出模式,但某些浏览器在某些情况下可能会起作用,具体取决于渲染模式和周围元素. (3认同)

kin*_*uta 5

这个问题有几个解决方案:

#outer: overflow: hidden;
Run Code Online (Sandbox Code Playgroud)

或者将一些非显示内容添加到浮动div之后的外部div,然后添加一个clear:两个样式规则.

你也可以通过css添加:after伪元素来插入那些你然后应用的div之后的内容:两者都有 - 这样做的好处是不需要额外的标记.

我的偏好是第一个.