美文网首页
浏览器兼容

浏览器兼容

作者: BAWScipes | 来源:发表于2017-09-13 19:15 被阅读0次
    1.什么是CSS hack

     由于不同厂商的浏览器,比如IE、Safari、Firefox、Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到想要的页面效果。所以需要针对不同的浏览器去写不同的CSS,让它能在不同的浏览器中也能得到想要的页面效果。

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

     (1)要不要做
      产品的角度(产品的受众、受众的浏览器比例、效果优先还是基本功能优先)
      成本的角度(有无必要做某件事)
     (2)做到什么程度
       让哪些浏览器支持哪些效果
     (3)如何做
       根据兼容需求选择技术框架/库(jquery)
       根据兼容需求选择兼容工具(html5shiv.js、respond.js、css reset、normalize.css、Modernizr)
       postCSS
       条件注释、CSS Hack、js能力检测做一些修补

    3.列举五种以上浏览器兼容的写法

     (1)合适的框架

    框架 兼容性
    Bootstrap (>=IE8)
    jQuery 1.~ (>=IE6)
    jQuery 2.~ (>=IE9)
    Vue (>=IE9)

     (2)条件注释

    <!--[if IE 6]-->
    <p>You are use Internet Explorer 6</p>
    <![endif]-->
    <!--[if !IE]><!-->
    <script>alert(1);</script>
    <!--<![endif]-->
    <!--[if IE 8]>
    <link href="ie8only.css" rel="stylesheet">
    <![endif]-->
    
    项目 范例 说明
    [if !IE] 非IE
    it [if it IE 5.5] 小于IE5.5
    ite [if ite IE 6] 小于等于IE6
    gt [if gt IE 5] 大于IE5
    gte [if gte IE 7] 大于等于IE7
    | if(IE6)|(IE7) IE6或者IE7
    CSS hack
    常见属性的兼容情况
    属性 兼容情况
    inline-block >=ie8
    min-width/min-height >=ie8
    :before,:after >=ie8
    div:hover >=ie7
    background-size >=ie9
    圆角/阴影 >=ie9
    动画/渐变 >=ie10

     (3)属性前缀法

    .box{
    color: red;
    _color: yellow;   /*ie6*/
    *color: blue;       /*ie6 7*/
    color: yellow\9;   /* ie/edge 6-8*/
    }
    

     (4)选择器前缀法

    .clearfix::after{
    cotent: '';
    display: block;
    clear: both;
    }
    .clearfix{
    *zoom: 1;   /*仅对ie6 7有效*/
    }
    
    .target{
    display: inlie-block;
    *display: block;
    *zoom: 1;
    }
    

     (5)IE条件注释法(HTML头部引用if IE)

    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
        <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
      <![endif]-->
    
    <!DOCTYPE html>
    <!--[if IEMobile 7 ]>
       <html dir="ltr" lang="en-US"class="no-js iem7"> 
    <![endif]-->
    <!--[if lt IE 7 ]>
       <html dir="ltr" lang="en-US" class="no-js ie6 oldie"> 
    <![endif]-->
    <!--[if IE 7 ]> 
       <html dir="ltr" lang="en-US" class="no-js ie7 oldie"> 
    <![endif]-->
    <!--[if IE 8 ]>
        <html dir="ltr" lang="en-US" class="no-js ie8 oldie"> 
    <![endif]-->
    <!--[if (gte IE 9)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!-->
    <html dir="ltr" lang="en-US" class="no-js">
    <!--<![endif]-->
    
    4.以下工具/名词是做什么的
    条件注释

     HTML源码中被IE有条件解释的语句,可被用来向IE提供及隐藏代码。(条件注释页面在IE9可正常使用,IE10不可正常使用)

    IE Hack

     针对IE浏览器编写不同的CSS(属性前缀法、选择器前缀法、IE条件前缀法),使得在不同浏览器中可以达到想要的效果。

    js能力检测

     使用js来检测浏览器的能力,不是区分浏览器,这样如果浏览器拥有某种能力则提供一种方案,没有某种能力则提供另一种方案。

    html5shiv.js

     针对不支持HTML5标签的浏览器,创建并模拟HTML5标签的效果并使相应的CSS生效。

    respond.js

     为不支持CSS3的媒体查询的浏览器(IE6-8)模拟CSS3的媒体查询。

    css reset

     清除浏览器默认样式*{margin: 0; padding: 0;}

    normalize.css

     保留有用的默认样式,修复浏览器自身的bug和常见浏览器的不一致性,使用详细的注释来解释代码。

    Modernizr

     是一个js类库,用来检测html5和CSS3能力,从而解决浏览器的兼容问题。

    postCSS

     利用JS插件转换CSS的工具,这些插件能够检验CSS、支持变量和混合,转化css3的新特性语法、行内图片等。

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

    浏览器市场份额
    CSS属性兼容网站(caniuse.com)
    Hack的写法网站(browserhacks)

    相关文章

      网友评论

          本文标题:浏览器兼容

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