• 网页兼容


    标记

    IE6IE7IE8FFOperaSarari
    [*+><] X X X X
    _ X X X X X
    9 X X X
    X X X X
    @media screen and (-webkit-min-device-pixel-ratio:0){.bb {}} X X X X X
    .bb , x:-moz-any-link, x:default X X √(ff3.5及以下) X X
    @-moz-document url-prefix(){.bb{}} X X X X X
    @media all and (min- 0px){.bb {}} X X X
    * +html .bb {} X X X X X
    游览器内核 Trident Trident Trident Gecko Presto WebKit

     

     

    什么是CSS hack

     

    由于不同厂商的流览器或某浏览器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持、 解析不一样,导致在不同浏览器的环境中呈现出不一致的页面展现效果。这时,我们为了获得统一的页面效果,就需要针对不同的浏览器或不同版本写特定的CSS 样式,我们把这个针对不同的浏览器/不同版本写相应的CSS code的过程,叫做CSS hack!

     

    CSS hack的原理

     

    由于不同的浏览器和浏览器各版本对CSS的支持及解析结果不一样,以及CSS优先级对浏览器展现效果的影响,我们可以据此针对不同的浏览器情景来应用不同的CSS。

     

    CSS hack分类

     

    CSS Hack大致有3种表现形式,CSS属性前缀法、选择器前缀法以及IE条件注释法(即HTML头部引用if IE)Hack,实际项目中CSS Hack大部分是针对IE浏览器不同版本之间的表现差异而引入的。

     

    • 属性前缀法(即类内部Hack):例如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",IE6~IE10都认识"9",但firefox前述三个都不能认识。
    • 选择器前缀法(即选择器Hack):例如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。
    • IE 条件注释法(即HTML条件注释Hack):针对所有IE(注:IE10+已经不再支持条件注释): <!--[if IE]>IE浏览器显示的内容 <![endif]-->,针对IE6及以下版本: <!--[if lt IE 6]>只在IE6-显示的内容 <![endif]-->。这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。

     

     

    CSS hack方式一:条件注释法

     

    这种方式是IE浏览器专有的Hack方式,微软官方推荐使用的hack方式。举例如下

     

    	只在IE下生效
    	<!--[if IE]>
    	这段文字只在IE浏览器显示
    	<![endif]-->
    	
    	只在IE6下生效
    	<!--[if IE 6]>
    	这段文字只在IE6浏览器显示
    	<![endif]-->
    	
    	只在IE6以上版本生效
    	<!--[if gte IE 6]>
    	这段文字只在IE6以上(包括)版本IE浏览器显示
    	<![endif]-->
    	
    	只在IE8上不生效
    	<!--[if ! IE 8]>
    	这段文字在非IE8浏览器显示
    	<![endif]-->
    	
    	非IE浏览器生效
    	<!--[if !IE]>
    	这段文字只在非IE浏览器显示
    	<![endif]-->
    

     

    CSS hack方式二:类内属性前缀法

     

    Hack应用情境(一)

     

    适用范围:IE:6.0,IE7.0,IE8.0之间的兼容

     

     .bb{
    
    height:32px; background-color:#f1ee18;/*所有识别*/
    
    .background-color:#00deff9; /*IE6、7、8识别*/
    
    +background-color:#a200ff;/*IE6、7识别*/
    
    _background-color:#1e0bd1;/*IE6识别*/
    
    } /*一个用于展示的class为bb的div标签*/
    
    < div class ="bb"></ div > 

     

    Hack应用情境(二)

     

    适用范围:IE:6.0,IE7.0,IE8.0,Firefox之间的兼容

     

     .bb{
    height:32px;
    background-color:#f1ee18;/*所有识别*/ 
    background-color:#00deff9; /*IE6、7、8识别*/
    +background-color:#a200ff;/*IE6、7识别*/
    _background-color:#1e0bd1;/*IE6识别*/
    }
    .bb, x:-moz-any-link, x:default{background-color:#00ff00;}/*IE7 firefox3.5及以下 识别 */
    @-moz-document url-prefix(){.bb{background-color:#00ff00;}}/* 仅firefox 识别 */
    * +html .bb{background-color:#a200ff;}/* 仅IE7 识别 */ /*一个用于展示的class为bb的div标签*/ < div class ="bb"></ div >

     

    Hack应用情境(三)

     

    适用范围:IE:6.0,IE7.0,IE8.0,Firefox,Safari(Chrome)之间的兼容

     

     

     

     .bb{
    height:32px;
    background-color:#f1ee18;/*所有识别*/ 
    background-color:#00deff9; /*IE6、7、8识别*/ 
    +background-color:#a200ff;/*IE6、7识别*/ 
    _background-color:#1e0bd1;/*IE6识别*/ } 
    @media screen and (-webkit-min-device-pixel-ratio:0){.bb{background-color:#f1ee18}}{} /*safari(Chrome) 有效 */ 
    .bb, x:-moz-any-link, x:default{background-color:#00ff00;}/*IE7 firefox3.5及以下 识别 */ 
    @-moz-document url-prefix(){.bb{background-color:#00ff00;}}/*仅firefox 识别*/ * +html .bb{background-color:#a200ff;}/* 仅IE7 识别 */
    
    
    /*一个用于展示的class为bb的div标签*/
    
    < div class ="bb"></ div > 

     

  • 相关阅读:
    DOS命令如何删除文件和文件夹
    屏蔽电信流氓弹出广告
    Wcf客户端配置里Endpoint的Name属性无效
    正则替换中的一个Bug
    【原】解决 iframe 在 iPad 上不能滚动的问题
    【原】JSON.parse() 和 JSON.stringify()
    【原】SQL 使用 PIVOT 和 UNPIVOT 行转列 列转行
    【原】How to fix: Handler “PageHandlerFactoryIntegrated” has a bad module “ManagedPipelineHandler” in its module list
    【原】DES Encrypt / Decrypt
    【原】JSON.parse() 和 JSON.stringify()
  • 原文地址:https://www.cnblogs.com/Outyua/p/4678458.html
Copyright © 2020-2023  润新知