1.浏览器兼容性问题是什么同一个代码,有的浏览器显示正常,有的浏览器显示不正常2.为什么会出现浏览器兼容性问题版本越老,bug越多同一个产品越多,版本越新,功能越多。老的浏览器还没有这个功能,当然显示不对。不同的浏览器有不同的标准和不同的效果。例如,不同浏览器的内核是不同的。三、使用的网站1.caniuse.com检查CSS属性的兼容性2.browserhacks检查Hack的写法4.处理兼容性问题的思路1.是否做产品audience,浏览器占受众比例,效果优先级还是基本功能优先)成本角度(是否有必要做某事)2.支持到什么程度,哪些浏览器支持哪些效果3.怎么做(1)根据兼容性要求选择技术框架/库(jquery)(2)根据兼容性要求选择兼容工具(html5shiv.js、respond.js、cssreset、normalize.css、Modernizr)postCSS(三)Conditionalcomments,CSSHack,jscapabilitytestingDosomePatch5.ProgressiveenhancementandgracefullydegradationProgressiveenhancement:为低版本浏览器构建页面,保证最基本的功能,然后为高级浏览器改进和添加效果、交互等功能,以达到更好的用户体验gracefuldegradation(优雅降级):从一开始就构建完整的功能,然后使其兼容低版本的浏览器。六、处理兼容性问题的方法1.选择合适的框架(1)Bootstrap(>=ie8)(2)jQuery1.~(>=ie6),jQuery2.~(>=ie9)(3)Vue(>=ie9)(4)react(兼容ie8)不同的框架兼容不同的浏览器,开发前需要注意IE条件解释的语句。条件注释可用于在IE中提供和隐藏代码。使用条件注释的页面在WindowsInternetExplorer9中可以正常工作,但在InternetExplorer10中不能正常工作。IE10不再支持条件注释3、CSShack(1)原因:不同厂商的浏览器(如InternetExplorer、Safari、MozillaFirefox、Chrome等),或者同一厂商不同版本的浏览器(如IE6和IE7),对CSS解析的理解不完全一样,所以生成的页面效果会有所不同,而得不到我们需要的页面效果。我们需要为不同的浏览器编写不同的CSS,这样它才能在不同的浏览器中得到我们想要的页面效果。在实际项目中,CSSHack多是针对不同版本IE浏览器的性能差异而引入的。(2)CSSHackExpressionHack(黑客)利用不同浏览器的bug来实现浏览器的兼容性。CSSHack大致有三种表现形式,CSS属性前缀法,选择器前缀法,IE条件注释法(即HTML头引用ifIE)Hack属性前缀法(即类内部Hack)比如IE6可以识别下划线_和星号*,IE7可以识别星号*,但不能识别下划线_,IE6~IE10都可以识别"\9",但是前面提到的三个firefox都不能识别这些是ie的bug,我们可以利用这些bug来识别版本ie.box{颜色:红色;_颜色:蓝色;/*ie6*/*颜色:粉色;/*ie67*/颜色:黄色\9;/*ie/edge6-8*/}所有IE的选择器前缀方法(即selectorHack)IE条件注释方法(即HTML条件注释Hack)(注:IE10+不再支持条件注释):;IE6及以下版本:。这种hack不仅对CSS有效,所有写在判断语句(3)举个栗子.target{display:inline-block;//inline-block只支持上面的ie*display:inline;//设置为内联元素*zoom:1;//是ie67的老函数,可以触发ie的haslayout产生类似bfc的效果}.clearfix:after{content:'';显示:块;清除:两者;}.clearfix{*缩放:1;/*只对ie67有效,可用于清除浮动*/}总结:csshack是为了兼容低版本ie的一些功能,改变写法实现功能。然后利用ie的bug执行一些只有低版本ie才能通过*或_识别的代码。//ifFor移动端,添加一个iem7类//如果小于ie7,则添加一个ie6类//如果是ie7,添加一个ie7类//如果是ie7,添加一个ie7类
