• hack是什么


      不同浏览器对css的解析是不同是,因此需要css hack来解决浏览器局部的兼容性问题。针对不同浏览器写不同的CSS代码的过程叫CSS  Hack。

      常见的hack有三种形式,分别是CSS属性hack,CSS选择符hack,IE条件注释hack,hack主要针对IE浏览器。

    CSS属性hack:如IE6能识别"_"和"*",IE7能识别"*",不能识别"_",firefox两个都不能识别。

    color:red;//所有浏览器识别

    _color:red;//IE6识别

    *color:red;//IE6、IE7识别

    +color:red;//IE6、IE7识别

    *+color:red;//IE6、IE7识别

    [color:red;//IE6、IE7识别

    color:red9;//IE6、IE7、IE8、IE9识别

    color:red;//IE8、IE9识别

    color:red9;//IE9识别

    color:red ;//IE9识别

    color:red!important;IE6不识别!important

    CSS选择符hack:IE6能识别*html.class{},IE7能识别*+html.class{}或者*:first-child+html.class{}。

    *html #demo{color:red;} //IE6识别

    *+html #demo{color:red;} //IE7识别

    body:nth-of-type(1) #demo{color:red}  //IE9、FF3.5+、Chrome、Safari、Opera识别

    head:first-child+body #demo{color:red}  //IE7+、FF、Chrome、Sarari、Opera识别

    :root #demo{color:red9} //仅IE9识别

    IE条件注释hack:IE条件注释从IE5开始提供的一种非标准逻辑语句只在IE有有效,其他浏览器被当做注释。

    <!--[if IE]>IE可见<![endif]-->

    <!--[if IE 6]>IE6可见<![endif]-->

    <!--[if IE 7]>IE7可见<![endif]-->

    <!--[if !IE 7]>IE不可见<![endif]-->

    <!--[if gt IE 6]>IE6以上版本可见<![endif]-->

    <!--[if gte IE 6]>IE6和IE6以上版本可见<![endif]-->

    <!--[if lt IE 7]>IE7以下版本可见<![endif]-->

    <!--[if lte IE 7]>IE7和IE7以下版本可见<![endif]-->

    <!--[if !IE]>IE不可见<![endif]-->

    由于IE6不支持!improtant,ff支持!important,所以用来区分浏览器。

    <style type="text/css">

    .demo{

    color:red !important;

    color:green;

    }

    </style>

    <div class="demo">abc</div>

    在ie6中字体为绿色,在FF中字体为红色。

    注意:在一个选择器里面,!important改变优先级,IE6下是无效的,后面的样式覆盖前面的样式。在有多个选择器的时候,!important有效的。

    <style type="texe/css">

    .demo{

    color:red !important;

    }

    .demo{

    color:green;

    }

    </style>

    <div class="demo">abc</div>

    在多选择符的时候也要注意IE6的显示情况:

    #name.a1.a2 {color:red};

    .a1.a2 {color:red};

    在IE7+和FF/OPERA/SAFARI都支持,在IE6上则被理解为:

    #name.a2 {color:red};

    .a2 {color:red};

    前面的类名会被后面的类名覆盖掉。可考虑不用类组合的形式。

    本学习内容来源于  前端客 的分享:http://www.qdker.com/archives/138.html

  • 相关阅读:
    SpringData JPA 使用原生 SQL
    解决:CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
    Java 正则表达式 简单用法
    Java文件I/O简单介绍
    理清 UT、UTC、GMT和CST
    【LeetCode】面试题62. 圆圈中最后剩下的数字
    【阅读笔记】Java核心技术卷一 #6.Chapter8
    【阅读笔记】Java核心技术卷一 #5.Chapter7
    【阅读笔记】Java核心技术卷一 #4.Chapter6
    SQL面试题
  • 原文地址:https://www.cnblogs.com/lionisnotkitty/p/6006697.html
Copyright © 2020-2023  润新知