这是我参与8月更文挑战的第20天,活动详情查看:8月更文挑战
市场上浏览器种类很多,不同浏览器的内核也不尽相同,所以各个浏览器对网页的解析存在一定的差异。
下面我罗列了一些常见的兼容性问题及处理方式,请大家品鉴。
- 不同浏览器的标签默认的margin和padding不一样。
解决方式:
*{margin:0;padding:0;}
复制代码
- IE6双边距bug:块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大。
解决方式:hack
div {
display:inline;//将目标元素其转化为行内属性。
}
复制代码
-
渐进识别的方式,从总体中逐渐排除局部。首先,巧妙的使用“9”这一标记,将IE浏览器从所有情况中分离出来。接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。
{ background-color:#f1ee18;/*所有识别*/ .background-color:#00deff\9; /*IE6、7、8识别*/ +background-color:#a200ff;/*IE6、7识别*/ _background-color:#1e0bd1;/*IE6识别*/ } 复制代码
-
设置较小高度标签(一般小于10px),在IE6,IE7中高度超出自己设置高度。
解决方式:hack
给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度。
- IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性。
解决方式:
统一通过getAttribute()获取自定义属性。
- Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示。
解决方式:
可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决。
- 超链接访问过后hover样式就不出现了,被点击访问过的超链接样式不再具有hover和active了。
解决方式:
改变CSS属性的排列顺序:L-V-H-A ( love hate ): a:link {} a:visited {} a:hover {} a:active {}
- cursor:hand 显示手型在safari 上不支持。
解决方式:
统一使用 cursor:pointer