4.11日音讯,清除clear在浮动元素容器的应用,在CSS规范中,浮动定位不属于正常的页面流(pageflow),是独立定位的。所以,只含有浮动元素的父容器,在显示时不考虑子元素的位置,就当它们不存在一样。这就造成了显示出来,父容器好像空容器一样。
解决方法:添加空元素
经典的解决方法,就是在浮动元素下方添加一个非浮动元素,这样一来,就没问题,能够正常显示了。原理是父容器现在必须考虑非浮动子元素的位置,而后者肯定出现在浮动元素下方,所以显示出来,父容器就把所有子元素都包括进去了。
这种方法比较简单,但是要在页面中增加冗余标签,违背了语义网的原则。那么,有没有不修改HTML代码的方法呢?
最佳解决方法
还是回到方法一,能不能通过CSS语句添加子元素呢,这样就不用修改HTML代码了?
回答是可以的,我们知道CSS语句中有一个:after伪选择符,就可以在父容器的尾部自动创建一个子元素,这正好符合我们的需要。
其中的"clearfix"是父容器的class名称,"content:"020";"是在父容器的结尾处放一个空白字符,"height:0;"是让这个这个空白字符不显示出来,"display:block;clear:both;"是确保这个空白字符是非浮动的独立区块。
但是,
邯郸网站建设告诉大家:after选择符IE6不支持,也就是说上面的这段代码在IE6中无效,这怎么办?
我们添加一条IE6的独有命令"zoom:1;"就行了,这条命令的作用是激活父元素的"hasLayout"属性,让父元素拥有自己的布局。(它的具体含义,请参见本文的附录。)IE6会读取这条命令,其他浏览器则会直接忽略它。
.clearfix:after{content:"\0020";display:block;height:0;clear:both;}
.clearfix{zoom:1;}