float:
float元素的父元素不能指定clear属性
MacIE下若是对float的元素的父元素使用clear属性,周围的float元素布局就会混乱。
这是MacIE的著名的bug,假若不知道就会走弯路。
float元素务必指定width属性
不少浏览器在显示未指定width的float元素时会有bug。
因此无论float元素的内容如何,必定要为其指定width属性。
另外指定元素时尽可能使用em而不是px作单位。
float元素不能指定margin和padding等属性
IE在显示指定了margin和padding的float元素时有bug。
所以不要对float元素指定margin和padding属性(能够在float元素内部嵌套一个div来设置margin和padding)。
也可使用hack方法为IE指定特别的值。
float元素的宽度之和要小于100%
若是float元素的宽度之和正好是100%,某些古老的浏览器将不能正常显示。所以请保证宽度之和小于99%。浏览器
float的div必定要闭合
例如:(其中floatA、floatB的属性已经设置为float:left;)
程序代码
<#div id="floatA" ></#div>
<#div id="floatB" ></#div>
<#div id="NOTfloatC" ></#div>
这里的NOTfloatC并不但愿继续平移,而是但愿往下排。
这段代码在IE中毫无问题,问题出在FF。
缘由是NOTfloatC并不是float标签,必须将float标签闭合。
在程序代码
<#div class="floatB"></#div>
<#div class="NOTfloatC"></#div>
之间加上 程序代码
<#div class="clear"></#div>
这个div必定要注意声明位置,必定要放在最恰当的地方,
并且必须与两个具备float属性的div同级,之间不能存在嵌套关系,不然会产生异常。
而且将clear这种样式定义为为以下便可:
程序代码 .clear{ clear:both; }
此外,为了让高度能自动适应,要在wrapper里面加上overflow:hidden;
当包含float的box的时候,高度自动适应在IE下无效,这时候应该触发IE的layout私有属性(万恶的IE啊!)用zoom:1;能够作到,这样就达到了兼容。
例如某一个wrapper以下定义: 程序代码 .colwrapper{ overflow:hidden; zoom:1; margin:5px auto; }app
清除浮动
在Firefox中,当子级都为浮动时,那么父级的高度就没法彻底的包住整个子级,那么这时用这个清除浮动的HACK来对父级 作一次定义,那么就能够解决这个问题。
select:after {
content:”.”;
display:block;
height:0;
clear:both;
visibility:hidden;
}布局