问题:经常遇到的浏览器兼容性问题及解决方法?思路:首先明确项目兼容哪些浏览器的最低版本,然后再考虑CSS样式和JavaScript在这些浏览器中的兼容性。1.HTML兼容性1.IE9以下浏览器对新H5标签的识别html5shiv.min.js:解决ie9以下浏览器不识别html5新标签导致CSS无法工作的问题。respond.min.js:让不支持css3MediaQuery的浏览器,包括IE6-IE8等浏览器支持查询。引入respond.min.js,但是css后面(越早引入越好,在ie下看到页面闪屏的概率是lower值越低,因为会先渲染CSS,如果后面加载respond.js,根据媒体查询解析出的CSS会再次改变页面的布局,所以好像会有闪屏).2.不同的浏览器对标签有不同的默认内部/外部补丁有很多行为差异。解决这类问题最好的方法就是使用一定的CSSReset,为所有元素设置一个统一的样式,这样你就可以在一个相对统一、干净的样式表的基础上开始工作了。目前流行的Reset库有normalize.css、minireset和ress,它们可以纠正浏览器之间的许多已知差异。如果你不打算使用外部库,你可以使用以下基本规则:*{margin:0;填充:0;box-sizing:border-box;}*时间很快,但是如果网站很大,CSS样式表文件很大,这样写的话,会初始化所有的标签,会大大增加网站上的负载,加载网站需要很长时间。许久。2.CSS兼容性1.IE的条件注释hack:2.IE属性过滤(常用的hack方法)针对不同的IE浏览器,可以使用不同的字符修改特定版本的IE浏览器样式控件。3.浏览器CSS兼容前缀使用特定的浏览器前缀是CSS开发中的常见任务之一。不同的浏览器、不同的属性对前缀的要求不同,这就导致我们在编码过程中不可能记住所有的前缀规则。而且在写样式代码的时候要加上特定的浏览器前缀支持也很麻烦。幸运的是,有很多工具可以帮助我们进行这样的开发:在线工具:Autoprefixer文本编辑器插件:SublimeText,AtomLibraries:Autoprefixer(PostCSS)4.标签的几种CSS状态序列很多人都在写标签的样式,他们会奇怪为什么writtenstyle没有效果,或者点击超链接后,hover和activestyles没有效果。覆盖。正确顺序:L-V-H-A:a:link,a:visited,a:hover,a:active{}“:link”:a标签未被访问的状态;":visited":标签被访问过的状态;":hover":鼠标悬停在标签上的状态;":active":标签被鼠标按下时的状态;5.IE6doublemargin问题会出现doublemargin问题解决办法:display:inline;6.兼容CSS设置透明度IE使用filter:alpha(opacity=60),其他主流浏览器使用opacity:0.6;3.兼容JavaScript对象通用浏览器IE绑定和移除事件处理器addEventListenerremoveEventListenerattachEventdetachEvent获取事件目标event.targetevent.srcElement阻止事件默认行为event.returnValueevent.preventDefault停止事件冒泡stopPropagationcancelBubble创建XHR对象XMLHttpRequest构造函数activeXObject参考文章:bootstrap其他CDN地址respondjs实现思路现代CSS代码编写20条建议浏览器兼容性问题解决方案总结
