浏览器兼容问题总结
浏览器兼容问题是指,不同厂商开发的浏览器针对同一段代码的不同解析,造成页面展示效果出现差异的情况。为了追求显示效果一致,前端开发人员需要针对不同兼容问题采用相应的方法进行处理。以下为开发过程中常见问题的总结与解决方案。
1. <!DOCTYPE HTML> 文档类型的声明
产生条件:IE6 浏览器中,未书写文档声明会触发怪异解析现象。
解决办法:书写文档声明。
2. 横向双外边距
产生条件:IE6 中块元素浮动后(左浮左 margin,右浮右 margin),出现双倍 margin。
解决办法:在浮动样式中加入 display: inline,或调整浮动方向与 margin 的组合。
3. 默认行高问题
产生条件:IE6/IE7/遨游浏览器中文字高度超出盒模型内容高度。
解决办法:设置 overflow: hidden 或将 line-height 设置为小于块的高度。
4. 默认样式差异
产生条件:不同浏览器默认的外边距和内边距不同。
解决办法:使用 CSS reset 文件清除默认样式。
5. img 外部的 border
产生条件:img 外部有 a 标签时,边框会出现。
解决办法:设置 img 的边框为 border: 0。
6. 经典 3 像素 Bug
产生条件:IE6 中浮动块与未浮动块同一行时,出现 3px 间距。
解决办法:设置非浮动元素浮动。
7. PNG 格式图片透明问题
产生条件:IE6 不支持 PNG 透明。
解决办法:使用 JavaScript 处理或用 GIF/JPG 替代。
8. 清浮动的默认行高问题
产生条件:使用空 div 清浮动时,IE6 中会存在默认行高。
解决办法:设置 height: 0; overflow: hidden; clear: both。
9. 图片默认间距
产生条件:img 标签换行后。
解决办法:为 img 设置 float。
10. hover 不适用于所有标签
产生条件:IE6 中 hover 仅支持 a 标签。
解决办法:用 JavaScript 模拟或嵌套行内标签。
11. table 的 border-color 无效
产生条件:IE6 中 table 的 border-color 设置无效。
解决办法:通过 CSS 样式控制边框颜色。
12. 透明 rgba 与 opacity
产生条件:IE6 不支持。
解决办法:使用滤镜 filter: alpha(opacity=60)。
13. 子选择器问题
产生条件:IE6 不支持子选择器 E > F。
解决办法:用其他选择器或后代选择器替代。
14. 最大最小宽度问题
产生条件:IE6 不支持 min/max-height 和 min/max-width。
解决办法:使用 _height 和 _width Hack。
15. 垂直居中问题
产生条件:IE6 不支持 display: table-cell。
解决办法:单行文本用 line-height,多行文本使用其他居中方法。
16. input 聚焦样式不同
产生条件:不同浏览器表现不同。
解决办法:使用 outline: none 清除样式。
17. 鼠标样式兼容问题
产生条件:cursor: pointer 和 cursor: hand 兼容性问题。
解决办法:同时设置 cursor: pointer; cursor: hand;。
18. 子标签无法撑开父标签高度
产生条件:父标签未浮动,子标签浮动。
解决办法:清浮动、设置 overflow: hidden 或固定高度。
19. li 的间距问题
产生条件:IE6 中 li 设置宽高且内部元素浮动。
解决办法:不设置宽高或取消浮动。
20. 行内元素布局混乱
产生条件:包含框内有绝对定位的元素且使用百分比定位。
解决办法:加入 zoom: 1。
21. 多显示一个字符
产生条件:浮动元素间夹杂 HTML 注释,宽度设置 100%。
解决办法:删除注释。
22. CSS 优先级问题
产生条件:IE6 中 !important 可能不起作用。
解决办法:单独设置样式。
23. 图片下部多余高度
产生条件:IE6 中图片下方多余 5px 高度。
解决办法:设置 display: block 或调整父对象属性。
24. Hack 技术
说明:针对不同 IE 版本调整样式:
_: IE6*: IE6/7+: IE6/7\9: IE6-IE10\0: IE8-IE11
25. position: fixed 不兼容
产生条件:IE6 中不支持。
解决办法:使用 CSS Hack 和 JavaScript。
26. background-size 不支持
产生条件:IE6-IE8 中。
解决办法:使用滤镜。
27. z-index Bug
产生条件:IE6-IE8 中层级失效。
解决办法:提高父级层级。
28. IE6 透明兼容问题
解决办法:使用滤镜 progid:DXImageTransform.Microsoft.gradient。
29. 不支持 opacity
解决办法:使用 filter 和 -ms-filter。
以上为常见浏览器兼容问题及解决方法的汇总。
评论区