美文网首页
浏览器兼容

浏览器兼容

作者: 羌生 | 来源:发表于2017-10-30 22:42 被阅读0次

    一,什么是css hack?

    CSS hack由于不同厂商的浏览器,比如Internet Explorer,Safar,Mozilla Firefo,Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。 这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。 简单的说,CSS hack的目的就是使你的CSS代码兼容不同的。当然,我们也可以反过来利用CSS hack为不同版本的浏览器定制编写不同的CSS效果。

    二,谈一谈浏览器兼容的思路

    • 要不要做
      产品的角度:产品的受众、受众的浏览器比例、效果优先还是基本功能优先
      成本的角度 :有无必要做某件事

    • 做到什么程度
      让哪些浏览器支持哪些效果

    • 如何做
      根据兼容需求选择技术框架/库(jquery)
      根据兼容需求选择兼容工具(html5shiv.jsrespond.jscss resetnormalize.cssModernizr)
      postCSS
      条件注释、CSS Hack、js 能力检测做一些修补

    三,列举5种以上浏览器兼容的写法

    1.属性前缀法(即类内部Hack):

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

    .top{
       _color:red;/*只被ie6所解析*/
       *color:blue;/*只被ie6、ie7所解析*/
        color:white/9;/*可被ie6~ie10所解析*/
    }
    
    2.条件注释法

    是于HTML源码中被IE有条件解释的语句。条件注释可被用来向IE提供及隐藏代码。

    <!--[if IE]>用于 IE <![endif]-->
    <!--[if IE 6]>用于 IE6 <![endif]-->
    <!--[if IE 7]>用于 IE7 <![endif]-->
    <!--[if IE 8]>用于 IE8 <![endif]-->
    <!--[if IE 9]>用于 IE9 <![endif]-->
    <!--[if gt IE 6]> 用于 IE6 以上版本<![endif]-->
    <!--[if lte IE 7]> 用于 IE7或更低版本 <![endif]-->
    <!--[if gte IE 8]>用于 IE8 或更高版本 <![endif]-->
    <!--[if lt IE 9]>用于 IE9 以下版本<![endif]-->
    <!--[if !IE]> -->用于非 IE <!-- <![endif]-->
    
    3.选择合适的框架和属性

    框架如:

    • Bootstrap (>=ie8)
    • jQuery 1.~ (>=ie6), jQuery 2.~ (>=ie9)
    • Vue (>= ie9)

    属性如:
    inline-block: >=ie8
    min-width/min-height: >=ie8
    :before,:after: >=ie8
    div:hover: >=ie7
    inline-block: >=ie8
    background-size: >=ie9
    圆角: >= ie9
    阴影: >= ie9
    动画/渐变: >= ie10

    4.浏览器私有前缀法
    • -moz代表firefox浏览器私有属性
    • -ms代表IE浏览器私有属性
    • -webkit代表chrome、safari私有属性
    5.使用Modernizr等类似工具来帮助页面进行各新旧浏览器的兼容

    四,以下工具/名词是做什么的?

    • 条件注释:一种安全的区分IE浏览器版本的语法,且被认为是取代针对IE css hack的首选办法,对IE的版本和非IE有优秀的区分能力。
    • IE Hack:针对IE浏览器各版本的漏洞或特性,来分别兼容IE各版本浏览的做法,常用的方法如条件注释。
    • js 能力检测:利用js进行浏览器的能力检测,能力检查的目标不是识别特定的浏览器,而是识别浏览器的能力,然后根据浏览器的能力,设定不同的兼容方案。
    • html5shiv.js:用于解决IE9以下版本浏览器对HTML5新增标签不识别,并导致CSS不起作用的问题。
    • respond.js:帮助ie6~ie8浏览器支持响应式布局。
    • css reset:默认样式重置
    • Normalize:在默认的HTML元素样式上提供了跨浏览器的高度一致性。它的主要目的是
      1.保护有用的浏览器默认样式而不是完全去掉它们
      2.一般化的样式:为大部分HTML元素提供
      3.修复浏览器自身的bug并保证各浏览器的一致性
      4.优化CSS可用性:用一些小技巧
      5.解释代码:用注释和详细的文档来
    • Modernizr:是一个用来检测浏览器功能支持情况的 JavaScript 库,它会在会在页面加载后立即检测特性;然后创建一个包含检测结果的 JavaScript 对象,同时在 html 元素加入方便你调整 CSS 的 class 名。
    • POSTCSS: 它可以被理解为一个平台,可以让一些插件在上面跑,它提供了一个解析器,可以将CSS解析成抽象语法树,通过PostCSS这个平台,我们能够开发一些插件,来处理CSS。

    查询属性兼容性的常用网站:

    http://caniuse.com

    相关文章

      网友评论

          本文标题:浏览器兼容

          本文链接:https://www.haomeiwen.com/subject/lspmpxtx.html