Web12.浏览器兼容

来源:互联网 发布:hpm226dn设置网络打印 编辑:程序博客网 时间:2024/06/17 17:50

什么是浏览器兼容:

同一份代码,有的浏览器效果正常,有的不正常

不正常的原因:对应浏览器不支持

如何让它展示正常:条件注释 单独hack等


为什么会有浏览器兼容问题

同一产品,版本越老bug越多

同一产品,版本越新功能越多

不同产品,不同标准,不同实现方式


渐进增强和优雅降级

1.progressive enhancement 针对低版本浏览器进行构建页面,保证最基本的

功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用

户体验

2.graceful degradation 一开始就构建完整的功能,然后再针对低版本浏览器进行

兼容


合适的框架



常见属性的兼容:








题目:

1.什么是CSS hack

由于不同厂商的浏览器 比如IE Safari  Mozilla Firefox等,或者同一厂商的不同版本,比如IE6和IE7,对CSS的解析

认识不完全一样,因此导致生成的页面效果不一样,得不到我们所需要的页面效果

这个时候我们就需要针对不同浏览器去写不同的CSS,让它能在不同的浏览器中

也能得到我们想要的页面效果


CSS Hack大致有三种表现形式,CSS属性前缀法,选择器前缀法,以及IE条件注释法(即HTML头部引用if IE)

Hack,实际项目中CSS Hack大部分是针对IE浏览器不同版本之间的表现差异而引入的

       1.属性前缀法(即类内部Hack):例如IE6能识别下划线“”和星号“*”,IE7能识别

          星号"*",但不能识别下划线“”,   IE6~IE10都认识“\9”,但firefox前述三个都不能认识

        2.选择器前缀法(即选择器Hack)

        3.IE条件注释法(即HTML条件注释Hack):


2.谈一谈浏览器兼容的思路

    要不要做

        产品的角度(产品的受众,受众的浏览器比例,效果优先还是基本功能优先)

        成本的角度 (有无必要做某件事)

    做到什么程度

         让哪些浏览器支持哪些效果

    如何做

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

         根据兼容需求选择兼容工具(html5shiv.js,  respond.js ,  css reset,  normalize.css, Modernizr)

         postCSS         

         条件注释,CSS Hack, js能力检测做一些修补


3.列举5种浏览器兼容的写法

        

        

     

             

  


4.下列工具、名词是做什么的

             1.条件注释:

             conditional comment 是HTML源码中被IE有条件解释的语句,条件注释可以被

             用来向IE提供及隐藏代码

             比如:

      <!--[if IE 6]>      <p>You are using Internet Explorer 6.</p>      <![endif]-->      <!--[if !IE]><!-->      <script>alert(1);</script>      <!--<![endif]-->      <!--[if IE 8]>      <link href="ie8only.css" rel="stylesheet">      <![endif]-->
            使用了条件注释的页面在IE9中可正常工作

            但在IE10中无法正常工作

            IE10不再支持条件注释            

项目   范例                      说明
!          [if !IE]                    非IE

lt         [if lt IE 5.5]           小于IE5.5

lte      [if lte IE 6]             小于等于IE6

gt       [if gt IE 5]              大于IE5

gte     [if get IE 7]           大于等于IE7

l         [if (IE6)|(IE7)]       IE6或者IE7

            2.IE hack

针对IE浏览器的CSS hack


            3.js能力检测


            4.html5shiv.js

创建一个标签  ie678上不能展现html5的标签

html5shiv.js可以模拟标签


            5.respond.js

模拟CSS3的媒体查询(用于IE678)


                6.CSS Reset

https://segmentfault.com/a/1190000003021766

去掉默认样式


                7.Normalize.css

https://segmentfault.com/a/1190000003021766

相对于CSS Reset更灵活,修复bug,保护了

一些默认样式


                8.Modernizr

用于处理浏览器兼容的一个工具


                9.postCSS

提供了一个解析器,能够将CSS解析成抽象语法树(AST)


5.一般在哪个网站查询属性兼容性

    1.tongji.baidu.com/data/browser查询各类浏览器占用户比例

    2.caniuse.com  查CSS属性兼容

    3.browsehack   查Hack写法

原创粉丝点击