如何修正DIV float以后致使的外部容器不能撑开的问题 html
在写HTML代码的时候,发如今Firefox等符合W3C标准的浏览器中,若是有一个DIV做为外部容器,内部的DIV若是设置了float样式,则外部的容器DIV由于内部没有clear,致使不能被撑开。看下面的例子:java
HTML4STRICT代码:浏览器
<div style="width:200px;border:1px solid red;"> <div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div> <div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div> <div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div> <div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div> <div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div> </div>
显示的结果以下:字体
容器DIV没有被撑开spa
你们能够看到,做为外部容器的边框为红色的DIV,没有被撑开。这是由于内部的DIV由于float:left以后,就丢失了clear:both和display:block的样式,因此外部的DIV不会被撑开。code
解决方案1:在子元素最后增长“<div style="clear:both;"></div>”
htm
<div style="width:200px;border:1px solid red;"> <div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div> <div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div> <div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div> <div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div> <div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div> <div style="clear:both;"></div> </div>
最后撑开的效果为:element
方案2 :get
<
div
class
=
"clearfix"
>
<
div
class
=
"left"
></
div
>
<
div
class
=
"right"
>
</
div
>
</
div
>
it
父div增长样式clearfix
.clearfix:after { /*在类名为“clearfix”的元素内最后面加入内容;*/ content: "."; /*内容为“.”就是一个英文的句号而已。也能够不写。*/ display: block; /*加入的这个元素转换为块级元素。*/ clear: both; /*清除左右两边浮动。*/ visibility: hidden; /*可见度设为隐藏。注意它和display:none;是有区别的。visibility:hidden;仍然占据空间,只是看不到而已;*/ line-height: 0; /*行高为0;*/ height: 0; /*高度为0;*/ font-size:0; /*字体大小为0;*/ } .clearfix { *zoom:1;} /*这是针对于IE6的,由于IE6不支持:after伪类,这个神奇的zoom:1让IE6的元素能够清除浮动来包裹内部元素。具体意思的话,不用深究,据说微软的工程师本身都没法解释清楚。height:1%效果也是同样。*/