浏览器常见兼容性问题汇总
1、随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大,解决方案是:*{margin:0;padding:0;}
2、块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大,常出现的问题是IE6中后面的一块被顶到下一行,解决方案是:在float的标签样式控制中加入 display:inline;将其转化为行内属性
3、设置较小高度标签(一般小于10px),在IE6,IE7,遨游中高度超出自己设置高度,这是因为这些浏览器下有默认行高,解决方案是:给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度。
4、几个img标签放在一起的时候,有些浏览器会有默认的间距,加了 *{margin:0;padding:0;} 也不起作用,这是因为多个image标签进行了换行,解决方案是:使用float属性为img布局
5、一个父标签与几个子标签嵌套,父标签不浮动,子标签float,子标签不撑开父的高度。解决方案是:a、 在子标签最后清浮动{<div style="height:0;clear:both;"> </div>} b 父标签添加{overflow:hidden;} c 给父标签设置高度。对于方法a,我们在html结构中添加了额外的div标签,不利于后期阅读和维护,现在我们采用after属性来设置清除浮动,比如这里提到的父标签为<div id="container"></div>,只需要设置CSS样式#container:after{content:'.';display: block;clear: both;height: 0;overflow:hidden;visibility: hidden;},这样就清楚了浮动,又没有增加额外的标签。
6、Ie6下,不识别最大宽、高度和最小宽高度,意即min-width/height和 Max-width/height在ie6中没效果
1 #top{ 2 position:fixed; 3 _position:absolute; 4 top:0; 5 right:20px; 6 _bottom:auto; 7 _top:expression(eval(document.documentElement.scrollTop)); 8 }
14、解决 ie6 最大、最小宽高 hack方法
1 /* 最小宽度 */ 2 .min_width{ 3 min-width:300px; 4 _width:expression(parseInt(this.clientWidth) < 300 ? "300px" : this.clientWidth); 5 } 6 7 /* 最大宽度 */ 8 .max_width{ 9 max-width:600px; 10 _width:expression(parseInt(this.clientWidth) > 600 ? "600px" : this.clientWidth); 11 } 12 13 /* 最小高度 */ 14 .min_height{ 15 min-height:200px; 16 _height:expression(parseInt(this.clientHeight) < 200 ? "200px" : this.clientHeight); 17 } 18 19 /* 最大高度 */ 20 .max_height{ 21 max-height:400px; 22 _height:expression(parseInt(this.clientHeight) > 400 ? "400px" : this.clientHeight); 23 }
15、z-index不起作用的 bug
ie6下 首先讲讲第一种z-index无论设置多高都不起作用情况。这种情况发生的条件有两个:1、父标签position属性为relative;2、问题标签含有浮动(float)属性。在IE6下,层级的表现有时候不是看子标签的z-index多高,而要看它们的父标签的z-index谁高谁低。
16、IE各版本Hack
1 /*类内部hack:*/ 2 .header {_width:100px;} /* IE6专用*/ //最好把IE6 hack写在最后一行 3 .header {*+width:100px;} /* IE7专用*/ 4 .header {*width:100px;} /* IE6、IE7共用*/ 5 .header {width:100px\0;} /* IE8、IE9共用*/ 6 .header {width:100px\9;} /* IE6、IE7、IE8、IE9共用*/ 7 .header {width:330px\9\0;} /* IE9专用*/ 8 9 /*选择器Hack:*/ 10 *html .header{} /*IE6*/ 11 *+html .header{} /*IE7*/
17、IE6下hover只支持a标签,解决方案是可以合理嵌套a标签或是给标签用javascript添加模拟hover效果
18、IE6中png格式图片不支持透明,解决方案是使用javascript进行处理;或者使用gif、jpg图像替代掉png图片的使用。
19、input聚焦框颜色与样式各浏览器不同,解决方法是使用:outline:none,清除默认样式后再统一设置。
20、鼠标移上小手效果,IE6为cursor:hand CSS标准:cursor:pointer 所以解决方案是这两种一起设置: cursor:hand;cursor:pointer
21、CSS优先级!important在IE6 同一组CSS属性中,!important不起作用,解决方法是单独设置