实现CSS跨浏览器

近来有遇到CSS跨浏览器的问题,特小结一下以备查阅。

一、padding和margin

  • 问题:ul标签中FF中有个padding值,却没有margin值,而在IE中正好相反。
  • 解决方法:将ul的padding和margin都设为0(也可以不是0)如:padding:0;margin:0;list-style:none;另外form默认在IE中也会有margin值,所以最好也将其margin和padding设为0。

二、cursor

  • 问题:IE中cursor:hand可以将鼠标设为手形,Firefox下不行。
  • 解决方法:都用cursor:pointer。

三、单位

  • 问题:任何距离的数值IE可以不加单位,Firefox必须要求写单位(0除外)。
  • 解决方法:写全单位如padding:0px;


四、高度

  • 问题:如果设置了一个DIV的高度,当DIV里实际内容大于所设高度,IE会自动拉伸以适应DIV容器大小,Firefox会固定DIV的高度,超出DIV底线以外的部分会出现和下面的内容重叠的现象
  • 解决方法:控制恰当的高度,或者不写,让浏览器自动调节高度,或者设置overflow:hidden;

五、clear:both

  • 问题:如果上面用float控制了n列DIV,IE下会自动检测自动排列,Firefox下则可能到处乱动。解决方法:float结束后的下一个标签加clear:both;以结束float的控制。

六、实际像素

  • IE/Opera:对象的实际宽度 = (margin-left) + width + (margin-right)
  • Firefox/Mozilla:对象的实际宽度= (margin-left) + (border-left-width) + (padding- left) + width + (padding-right) + (border-right-width) + (margin-right)所以排列多列表格时IE和Firefox显示宽度稍有区别。

发表评论