2009-11-18 226 views
10

我正在为我的学校“数学接力”比赛创建一个网站。为什么我的“容器”div不包含我的浮动元素?

我有一个“Container”div(带有白色背景),然后是容器内的顶部栏,左侧栏和右侧栏div。

左栏和右栏均浮在“容器”内。

但是,如果您查看下面的图片,可以看到右侧栏的底部显示灰色背景。如果“容器”确实包含顶部,左侧和右侧栏,那么它应该是容器背景,它显示出底部应该都是白色的统一级别。

相反,它看起来容器没有完全包含左边的&右侧栏,因此实际正文背景显示在右侧栏的底部。

alt text

这里是我的CSS:

#container { 
    margin: 0 auto; 
    width: 750px; 
    background-color: #ffffff; } 

#top-panel { 
    background-color: #000000; 
    text-align: left; 
    width: 100%; 
    height: 88px; 
    float: left; } 

#left-panel { 
    clear: left; 
    text-align: center; 
    background-color: #ffffff; 
    border-right: 1px dashed #000000; 
    float: left; 
    width: 250; } 

#right-panel { 
    background-color: #ffffff; 
    float: left; 
    width: 499; } 

链接here页面。

如何让“容器”真正包含里面的div,这样灰色的背景就不会显示在我的右侧面板下方,并在底部创建不均匀的水平?

回答

26

您的两个面板都是浮动的,因此会从正常的页面流中取出。为了使容器封装它们,你必须清除浮子。我做的方法是为类别清除br:

.clear { 
    clear:both; 
    line-height:0; 
} 

这样它就占用了空间并且很清晰。然后把它放在容器div的两个div下面

<br class="clear" /> 

应该工作!

2

什么都不是强迫遏制,你可以指定一个明确的最后一个元素来强制镇压。一个常见的手段是与clear:both即增加一个额外的阻挡元件:<div style="clear:both"></div>

8
overflow: auto 

应该修复它。

+0

这不起作用在IE7中。它可以在Chrome和FF中工作。 – 2009-11-18 19:59:49

+0

添加'zoom:1'使其在IE6/7中也可以工作。 – mercator 2009-11-18 21:38:08

2

有一个css唯一的方法来处理称为clearfix的问题。这是最好的使用它,你有选择地应用到你想要的div类:

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

针对您的特殊标记,以下CSS将做:

#left-panel:after, 
#right-panel:after { 
    content: "."; 
    display: block; 
    height: 0; 
    clear: both; 
    visibility: hidden; 
} 

参考http://www.positioniseverything.net/easyclearing.html

+0

:之后并不支持所有浏览器最显着的例子是IE6 - 因此它根本无法工作。 – 2009-11-18 19:53:10

11
overflow:hidden; height:100%; <-- for ie 

在容器上就可以了。

+4

+1:CSS创建的问题(浮动)应该由CSS解决... – 2012-11-20 16:31:52

+1

overflow:hidden;是你所需要的,如果它包含比屏幕高的内容(在IE10中测试),那么添加100%的高度实际上会限制div高度。 – Sam 2015-10-01 10:56:02

+0

为什么overflow:hidden会修复这个问题? – YoTengoUnLCD 2016-09-14 13:45:46

相关问题