我们先看看清除浮动的办法一共有多少个(IE里面用zoom:1就不写了,下一个专题再写)。
1.采用伪类:after进行后续空制的高度位零的伪类层清除
2.采用CSS overflow:auto的方式撑高
3.采用CSS overflow:hidden的方式产生怪异适应
4.采用display:table将对象变成table形式
5.采用div标签,以及css的clear属性
6.采用br标签,以及css的clear属性
7.采用br标签,以及其自身HTML的clear属性
以上几点可以将问题解决;但又有着各自的利弊,下面和上面的几条一一对应解释。
1.优点:结构语义化完全正确。
缺点:复用方式不当容易造成代码量急剧增大。
个人建议最外层轻浮动时或清晰模块化复用方式的人使用。
2.优点:结构语义化完全正确,代码量极少。
缺点:多个嵌套后,点击最外层的轻浮动框会使最外层至最内层内容全选(FF);或在mouseover造成宽度改变时会出现最外层模块有滚动条(IE)。
个人建议内个模块使用不要嵌套。
3.优点:结构语义化完全正确,代码量极少。
缺点:内容增多时不会自动换行而内容被隐藏掉。
个人建议宽度固定时使用不要嵌套。
4.优点:结构语义化完全正确,代码量极少。
缺点:盒模型属性已经改变,会引起其它的事情。
个人建议不要使用;但可以作为alpha版本当中临时性的忽悠下测试。
5.优点:代码量极少,复用性极高。
缺点:完全不能完美的适应语义化,不利于改版以及需求变更。
个人建议初学者使用,可以让你快速的解决浮动问题。
6.优点:语义化程度比第5种情况要更优;代码量极少,复用性极高。
缺点:语义化不够,不利于改版以及需求变更。
个人建议新手使用。
7.优点:语义化程度比第5、6种情况要更优;代码量最少,复用性极高。
缺点:语义化也不完美,不利于改版以及需求变更。
建议新手们使用时明白与其用classname来控制一种表现,还不如回归到WEB1.0的时代的网页直接用html属性来控制表现,后者的代码量更少。