html - 带有 float 元素的CSS背景颜色

标签 html css

假设我们有这个非常简单的场景

 <div class="content">
    <div class="left">
       <p>some content</p>
    </div>
    <div class="right">
       <p>some content</p>
    </div>
 </div>

 <div class="content">
    <div class="left">
       <p>some content</p>
    </div>
    <div class="right">
       <p>some content</p>
    </div>
 </div>

这是样式:

 .content {
    width: 960px;
    height: auto;
    margin: 0 auto;
    background: red;
    clear: both;
 }

 .left {
     float: left;
     height: 300px;
     background: green;
 }

 .right {
     float: right;
     background: yellow;
 }

事情是...当我向 <div class="right"> 添加内容时它应该拉下父 div,我们需要看到红色背景...问题是,我看不到红色背景填满所有高度。

编辑: here is a fiddle to test

最佳答案

当子元素 float 时,它们将脱离文档流。这样做时,父级不再定义尺寸,因为从技术上讲,子级不占用空间。因此,父元素自行折叠。当绝对定位子元素时也会发生同样的事情。

在这种情况下,我们可以通过向父元素添加 overflow:hidden 来修复它,从而强制它包含子元素。或者 overflow:auto 也能正常工作。有些人可能会建议它甚至比 overflow:hidden 更好,因为您将能够判断是否有任何计算被关闭。

jsFiddle example

.content {
    overflow:hidden;
}

现在父元素不再折叠,红色背景可见。

如果您正在寻找旧版浏览器的支持,您也可以使用 clearfix,但我不建议这样做。

关于html - 带有 float 元素的CSS背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20180081/

相关文章:

javascript - html/php 页面上的 Jquery 日期和时间

image - 背景图像 (CSS) 的缩放宽度问题

jquery - 我们可以使用 PhoneGap 使用 Eclipse 以外的 IDE 构建混合应用程序吗?

html - Css: 不能改变 <li> 的大小

javascript - bootstrap 的不稳定问题 -> 仅在大屏幕上行宽度不一致

css:放入此字段集中时属性发生了惊人的变化

javascript - 单击按钮时,如何使登录框显示在窗口中央?

html - 为什么我的盒子背景没有显示?

javascript - 什么会导致 scrollTop 出现故障?

javascript - 我能以某种方式阻止我的代码中的返回在表单元素之间添加间距吗?