前端技术程序员@IT·互联网

浅聊常见浏览器的兼容性问题

2017-09-27  本文已影响323人  浪里行舟

前言

浏览器的兼容性问题是个很庞大复杂的问题,很难找到四海皆准的办法,这里我们只是简单介绍下几种经典的处理兼容性问题的方法。

浏览器兼容问题

一、什么是浏览器的兼容性问题

浏览器兼容性问题又被称为网页兼容性或网站兼容性问题,指网页在各种浏览器上的显示效果可能不一致而产生浏览器和网页间的兼容问题。在网站的设计和制作中,做好浏览器兼容,才能够让网站在不同的浏览器下都正常显示。而对于浏览器软件的开发和设计,浏览器对标准的更好兼容能够给用户更好的使用体验。

二、为什么会有兼容性问题

主要原因有以下三个方面:

三、处理兼容性问题的思路

思路1:从产品的角度

思路2:从产品实现难度和开发成本——是否值得做

四、如何处理兼容性问题

首先我们先查阅CSS属性兼容,可以得到该css属性在目标浏览器是否兼容,如下图所示一些常见的css属性兼容性:

常见css属性兼容性

1、根据兼容需求选择技术框架/库(jquery)

常见js库的兼容性

2、根据兼容需求选择兼容工具(html5shiv.jsrespond.jscss resetnormalize.cssModernizr

3、postCSS

postCSS可以被理解为一个平台,可以让一些插件在上面跑,它提供了一个解析器,可以将CSS解析成抽象语法树,通过PostCSS这个平台,我们能够开发一些插件,来处理CSS。热门插件如autoprefixer,它可以帮我们处理兼容问题,只需正常写CSS,autoprefixer可以帮我的自动生成兼容性代码。PostCSS的目标是通过自定义插件和工具这样的生态系统来改造CSS。与Sass和Less这些预编译器相同的原则,PostCSS把扩展的语法和特性转换成现代的浏览器友好的CSS。

4、利用CSS Hack、js 能力检测做一些修补

CSS Hack:由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能在不同的浏览器中也能得到我们想要的页面效果。
CSS Hack 大致有3种表现形式,CSS属性前缀法、选择器前缀法以及IE条件注释法(即HTML头部引用if IE)Hack,实际项目中CSS Hack大部分是针对IE浏览器不同版本之间的表现差异而引入的。可以通过browserhacks 查 Hack 的写法。

.header{_width:100px;} /*ie6专用*/ 
.header{*+width:100px;} /*ie7专用*/ 
.header{*width:100px;} /*ie6,ie7共用*/ 
.header{width:100px\0;} /*ie8,ie9共用*/
.header{width:100px\9;} /*ie6,ie7,ie8,ie9共用*/ 
.header{_width:300px\9\0;} /*ie9专用*/
条件注释

例如:

<!--[if lt IE 9]>
  <script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script>
  <script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
<![endif]--> 
<!--[if IE 7]><html class="ie7 old-ie"><![endif]-->
<!--[if IE 8]><html class="ie8 old-ie"><![endif]-->
<!--[if IE 9]><html class="ie9"><![endif]-->
<![if !IE]><html><![endif]>

五、测试工具

上一篇 下一篇

猜你喜欢

热点阅读