代码改变世界

css兼容的问题 -持续更新

2012-06-26 22:30  cczw  阅读(227)  评论(0编辑  收藏  举报
  1. 如果ie6设置span的display为 inline-block或者block  那么span的高度你会发现无法设置成20像素以下,以为ie6的盒模型 最小高度是20像素。如果想设置成更小,要用overflow=hidden ;
  2. 如果Ie6设置了float为left,有时你会发现容器的margin变成了原来的两倍(不尽然准是两倍),解决办法是增加 display=inline 属性。
  3. 有时候你会发现你写的一句话莫名奇妙的被Ie6自动复制了几个字并显示出来。出现这种情况基本有两种:1文档的float样式,如果有这个样式,那么就看能不能不用这个样式来实现或者加上‘clear:both’清除浮动。2 检查一下代码中是否包含了注释<!---->  能去掉就去掉吧,网上有个公式 溢出文字 = 注释条数 x 2 -1 当溢出的字数大于总字数时,文字区块就会消失。
  4. 有时候你会发现在非ie下 外部容器不能被内部内容撑开,那就检查一下内部的标签是否有float标签,如果有的话那么解决办法有两个,一就是把外部容器也float,但是这样容易改变布局,还有个办法就是在外部容器内部的底部增加一个标签并设置成clear=both
  5. IE6/7 貌似都不支持块元素的display:inline-block,注意!是块级元素不支持。ie的解决办法是先使用 display:inline-block 属性触发块元素,然后再定义 display:inline,让块元素呈递为内联对象(两个display 要先后放在两个 CSS 声明中才有效果,这是 IE 的一个经典 bug ,如果先定义了 display:inline-block,然后再将 display 设回 inline 或 block,layout 不会消失)然后触发块元素的 layout(如:zoom:1 等)
  6. png图片的透明问题相信很多人至今仍在头疼吧。其实ie6也是支持png透明的,不过只支持png8索引色的透明度,我们一直头疼的透明度问题其实是因为png图片保存为了alpha 透明度。如果你遇到了这样的问题,请尽量将png图片保存为png8索引色透明度,如果要求的色彩什么比较严格而必须用alpha透明度,只有写hack或者用第三方文件解决。
  7. 3像素bug,ie6下的经典bug(日,这也能成经典。)一般这种情况是因为两个兄弟元素,一个使用了float,一个没有。其实如果一个容器内的子元素用了float,最好都用float,这样问题就不存在了。没有的话也可能解决,就是将float的元素,如果是left的话就使用_margin-right:-3px;反之就相反。就解决了。
  8. 双边距问题,也是tmmd 经典,同样也是float引起的问题,如果一个元素使用了float同样也是用了margin,那么就会发现在ie6下margin变成了设置值得两倍。这个问题ie7已经解决了。所以解决办法有两个,1是老办法hack,_margin_left(right)为原来的1/2;2004年后有了更好的解决办法:  _display:inline;