标签: web2.0

  • CSS Hack 汇总快查

    屏蔽IE浏览器(也就是IE下不显示)
    *:lang(zh) select {font:12px !important;} /*FF,OP可见,特别提醒:由于Opera最近的升级,目前此句只为FF所识别*/
    select:empty {font:12px !important;} /*safari可见*/
    这里select是选择符,根据情况更换。第二句是MAC上safari浏览器独有的。

    仅IE7与IE5.0可以识别
    *+html select {…}
    当面临需要只针对IE7与IE5.0做样式的时候就可以采用这个HACK。

    仅IE7可以识别
    *+html select {…!important;}
    当面临需要只针对IE7做样式的时候就可以采用这个HACK。

    IE6及IE6以下识别
    * html select {…}
    这个地方要特别注意很多博客都写成了是IE6的HACK其实IE5.x同样可以识别这个HACK。其它浏览器不识别。
    html/**/ >body select {…}
    这句与上一句的作用相同。

    仅IE6不识别,屏蔽IE6
    select { display /*屏蔽IE6*/:none;}
    这里主要是通过CSS注释分开一个属性与值,注释在冒号前。

    仅IE6与IE5不识别,屏蔽IE6与IE5
    select/**/ { display /*IE6,IE5不识别*/:none;}
    这里与上面一句不同的是在选择符与花括号之间多了一个CSS注释。不屏蔽IE5.5

    仅IE5不识别,屏蔽IE5
    select/*IE5不识别*/ {…}
    这一句是在上一句中去掉了属性区的注释。只有IE5不识别,IE5.5可以识别。

    盒模型解决方法
    selct {width:IE5.x宽度; voice-family :”\”}\””; voice-family:inherit; width:正确宽度;}
    盒模型的清除方法不是通过!important来处理的。这点要明确。

    清除浮动
    select:after {content:”.”; display:block; height:0; clear:both; visibility:hidden;}
    在Firefox中,当子级都为浮动时,那么父级的高度就无法完全的包住整个子级,那么这时用这个清除浮动的HACK来对父级做一次定义,那么就可以解决这个问题。

    截字省略号
    select { -o-text-overflow:ellipsis; text-overflow:ellipsis; white-space:nowrap; overflow:hidden; }
    这个是在越出长度后会自行的截掉多出部分的文字,并以省略号结尾,很好的一个技术。只是目前Firefox并不支持。

    只有Opera识别
    @media all and (min-width: 0px){ select {……} }
    针对Opera浏览器做单独的设定。

    以上都是写CSS中的一些HACK,这些都是用来解决局部的兼容性问题,如果希望把兼容性的内容也分离出来,不妨试一下下面的几种过滤器。这些过滤器有的是写在CSS中通过过滤器导入特别的样式,也有的是写在HTML中的通过条件来链接或是导入需要的补丁样式。

    IE5.x的过滤器,只有IE5.x可见
    @media tty {
    i{content:”\”;/*” “*/}} @import ‘ie5win.css’; /*”;}
    }/* */

    IE5/MAC的过滤器,一般用不着
    /*\*//*/
        @import “ie5mac.css”;
    /**/

    IE的if条件Hack
    <!–[if IE]> Only IE <![endif]–>
    所有的IE可识别
    <!–[if IE 5.0]> Only IE 5.0 <![endif]–>
    只有IE5.0可以识别
    <!–[if gt IE 5.0]> Only IE 5.0+ <![endif]–>
    IE5.0包换IE5.5都可以识别
    <!–[if lt IE 6]> Only IE 6- <![endif]–>
    仅IE6可识别
    <!–[if gte IE 6]> Only IE 6/+ <![endif]–>
    IE6以及IE6以下的IE5.x都可识别
    <!–[if lte IE 7]> Only IE 7/- <![endif]–>
    仅IE7可识别

  • 使用CSS Hack兼容浏览器

    一、IE条件注释
    1)针对某个具体IE版本应用样式表文件
    <!– [IE条件注释,适用IE7浏览器] –>
    <!– [if IE 7] >
    <link href=”image/ie7.css” type=”text/css” rel=”stylesheet” />
    <![endif]–>

    <!– [IE条件注释,适用IE6浏览器] –>
    <!– [if IE 6] >
    <style type=”text/css”>
    @import url(“ie6.css”);
    </style>
    <![endif]–>

    <!– [IE条件注释,适用IE5.5浏览器] –>
    <!– [if IE 5.5000] >
    <style type=”text/css”>
    @import url(“ie55.css”);
    </style>
    <![endif]–>
    由于IE5.5的版本号有点特殊,定义时应写成IE 5.5000

    2)针对所有IE版本应用样式表文件
    <!– [IE条件注释,适用IE5及更高版本浏览器] –>
    <!– [if IE] >
    <style type=”text/css”>
    @import url(“ie.css”);
    </style>
    <![endif]–>

    3)针对一定范围IE版本应用样式表文件
    如果要实现在一定版本范围内IE浏览器中有效,可以结合lte、lt、gte、gt 和!关键字,指明一个使用范围,详细说明如下:
     lte:Less than or equal to 的简写,也就是小于或等于的意思。
     lt:Less than 的简写,也就是小于的意思。
     gte:Greater than or equal to 的简写,也就是大于或等于的意思。
     gt:Greater than 的简写,也就是大于的意思。
     !:不等于的意思。
    <!– [IE条件注释,适用IE5及更高版本浏览器] –>
    <!– [if gte IE 5.5000] >
    <style type=”text/css”>
    @import url(“gte_ie55.css”);
    </style>
    <![endif]–>

    <!– [IE条件注释,适用IE7以下版本浏览器] –>
    <!– [if lt IE 7] >
    <link href=”lt_ie7.css” type=”text/css” rel=stylesheet />
    <![endif]–>

    二、@import规则过滤器
    /*仅适用IE 5.x/Windows版本浏览器*/
    @media tty{
    i{content:”\”;/*” “*/}} @import url(‘ie5x/win.css’); /*;)
    }/* */
    CSS1不能够识别@media规则,则那些仅能够支持CSS1的浏览器会自动忽略这几行代码。
    tty表示终端和电传打字机媒体类型,当前没有设备支持这种媒体类型,符合标准的浏览器会忽略这个规则,如FF、OP等。
    功能超前的浏览器会误认为是为i元素定义的样式,由于对转义字符的曲解而认为中间是一堆无意义的字符串。
    但是IE 5.x/Windows系列版本浏览器不能够识别转义字符,也不支持tty媒体类型,因此会忽略前面的声明,而执行后半部分的规则。

    1)适用IE 5/Windows浏览器的过滤器
    /*仅适用IE 5/Windows浏览器*/
    @media tty{
    i{content:”\”;/*” “*/}}; @import ‘ie5/win.css’; {;}/*”;}
    }/* */
    2)适用IE 5.5/Windows浏览器的过滤器
    /*仅适用IE 5.5/Windows浏览器*/
    @media tty{
    i{content:”\”;/*” “*/}}@m; @import ‘ie55/win.css’; /*”;}
    }/* */
    3)适用IE 5/Mac浏览器的过滤器
    /*仅适用IE 5/Mac版本浏览器*/
    /*\*//*/
    @import ” ie5mac.css”;
    /**/
    4)适用非IE 6/Windows及更低版本浏览器
    /*适用非IE 6/Windows及更低版本浏览器*/
    @import url(styles.css) all;
    5)适用非IE 5.x/Windows系列及更低版本浏览器
    /*适用非IE 5.x/Windows系列及更低版本浏览器*/
    @import “null?\”\{“;
    @import “styles.css”;
    @import “null?\”\}”;
    6)适用非IE 5/Windows系列及更低版本浏览器
    /*适用非IE 5/Windows系列及更低版本浏览器*/
    @import”styles.css”;
    7)适用非IE 4/Windows版本浏览器
    /*适用非IE 4/Windows版本浏览器*/
    @import”styles.css”;

    三、!important关键字过滤器
    /*[!important关键字过滤器]*/
    #content{
    width:414px !important;
    width:400px;
    padding:5px;
    border-width:2px;
    }
    FF和OP能够识别!important命令,IE6及更低版本浏览器忽略!important命令。

    四、下划线属性过滤器
    /*[下划线属性过滤器]*/
    #content{
    width:400px;
    _width:414px;
    padding:5px;
    border-width:2px;
    }
    Windows IE 6及更低版本浏览器会忽略下划线。

    五、转义属性过滤器
    /*[转义属性过滤器]*/
    div{
    border:solid 1px red;
    height:100px;
    width:100px;
    widt\h:200px;
    }
    Windows IE 5.x系列及更低版本浏览器会忽略”\”。
    注:不要把反斜杠放在数字0-9或字母a-f、n、r、t、v(包括大小写)的前面。

    /*[转义属性过滤器]*/
    div{
    border:solid 1px red;
    height:100px;
    width:100px;
    \width:200px;
    }
    能隐藏NS 4/Win或NS 4/Mac、IE 5/Mac版本浏览器中的声明。

    六、* html选择符过滤器
    /*[* html选择符过滤器]*/
    * html{/*定义在IE 6及更低版本中显示的字体为灰色*/
    color:#666;
    }

    七、属性选择符过滤器
    /*[属性选择符过滤器]*/
    div.try{/*适用所有浏览器的样式*/
    width:204px;
    height:304px;
    padding:2px;
    }
    div[class=try]{/*在非IE 6及更低版本浏览器中覆盖上面定义的宽和高声明,实现盒模型兼容*/
    width:200px;
    height:300px;
    }

    八、子对象选择符过滤器
    /*子对象选择符过滤器*/
    span>p{/*符合标准的浏览器中显示为白色*/
    color:#FFF;
    }
    span{/*IE 6及更低版本浏览器中显示为黑色*/
    color:#000;
    }

    九、相邻选择符过滤器
    /*[相邻选择符过滤器]*/
    h2 + parag{/*符合标准浏览器中显示为蓝色*/
    color:blue;
    }
    .parag{/*IE 6及更低版本浏览器中显示为红色*/
    color:red;
    }

    十、转义选择符过滤器
    /*[转义选择符过滤器]*/
    #testElement{/*IE 5.x系列版本浏览器中显示为蓝色*/
    color:blue;
    }
    #te\stElement{/*在非IE 5.x系列版本浏览器中显示为红色*/
    color:red;
    }

    十一、注释反斜杠过滤器
    /*[注释反斜杠过滤器]*/
    div{
    width:774px;
    }
    /*Hide Code for IE 5/Mac \*/
    div{
    width:100%;
    }
    /* End Hide */

    十二、隐藏单个声明
    1)在IE 6中隐藏声明
    /*[在IE 6中隐藏声明]*/
    div{
    height:200px;
    width:200px;
    width /**/:400px;
    background:#F6F;
    }
    注:注释在属性的后面,冒号的前面,且与属性名中间隔一个空格。

    2)在IE 5.5中隐藏声明
    /*[在IE 5.5中隐藏声明]*/
    div{
    height:200px;
    width:200px;
    width: /**/400px;
    background:#F6F;
    }
    注:注释在冒号的后面,且与冒号中间隔一个空格。

    3)在IE 5和IE 4中隐藏声明
    /*[在IE 5和IE 4中隐藏声明]*/
    div{
    height:200px;
    width:200px;
    width/* */:400px;
    background:#F6F;
    }
    注:注释在属性名的后面,冒号的前面,且注释中间隔一个空格。
      这个过滤器会同时适用Mac系统中的IE 5和IE 4。

    十三、隐藏多个声明
    /*[在IE 5.5及更低版本浏览器中隐藏声明]*/
    div.content{
    height:400px;
    width:400px;
    border:solid 1px blue;
    voice-family:”\”}\””;
    voice-family:inherit;
    height:200px;
    width:200px;
    border:solid 1px red;
    }
    IE 5.5及更低版本浏览器中不能够识别voice-family属性,同时错误地解析转义字符,误认为规则到voice-family:”\”}\””;就结束了。

    十四、隐藏规则
    1)在IE 5和IE 4中隐藏规则
    /*[在IE 5和IE 4中隐藏规则]*/
    div.content{
    height:400px;
    width:400px;
    background:red;
    }
    div.content/**/{
    background:blue;
    }
    IE 5和IE 4会隐藏第2个规则。这个过滤器同时适用Mac系统中的IE 5和IE 4。

    2)在IE 6及更低版本中隐藏规则
    /*[在IE 6及更低版本中隐藏规则]*/
    div.content{
    height:400px;
    width:400px;
    background:red;
    }
    div.content ,[dummy]{
    background:blue;
    }
    IE 6及更低版本中忽略第2个规则。

    3)在IE 6及更低版本中隐藏规则
    /*[在IE 6及更低版本中隐藏规则]*/
    div.content{
    height:400px;
    width:400px;
    background:red;
    }
    head+body div.content{
    background:blue;
    }

  • 浏览器BUG处理方法整理(部分)

    1. 星号*
    IE都能识别*,标准浏览器如FF不能识别*。
    例:p { color:yellow; *color:red;}
    类似的有
    + 加号
    只有IE解释
    p{color:red; +color:blue}
    IE 显示blue   FF显示 red
    2.!important
    IE6及以下将会忽略该样式,IE7 FF将支持;
    p{color:red !important;color:yellow;}
    IE7 FF将红色   IE6显示黄色
    此处注意的是!important方法只是按上述格式后才被IE6及以下忽略,除此之外的提高样式权重方法可通用。
    3.下划线。
    IE6及以下版本将运用该样式,其他将忽略
    p{color:red; _color:blue}

    4、注释:
    p {color:red};   
    这种样式在IE6中是可以应用显示的,而在IE5及以下版本是不会被处理的,所以可以针对IE5/6进行区别
    5、@IMPORT:
    在@IMPORT中使用URL来导入样式,标准用法是将URL中的值带上引号,如下@IMPORT URL(“newstyle.css”);这种用法   可以被IE5以上的浏览器及FF支持,从而实现了IE4的样式单独处理.
    另外,还有一个方法:
    @IMPORT URL(“noie.css”) screen;
    screen是用于指定设备类型的选项,screen用于屏幕显示,print用于打印设备显示但是IE对这种方法不支持,,所有的IE浏览器,从而可以进行IE和FF的区别。
    6、属性选择符: 用于对具有特定属性的对象进行选择
    span[class=left]{color:blue}   
    span[title]{color:red;}    
    IE6不支持,但是在FF里面工作正常,所以可以对IE和FF进行分别处理.
    在实际开发中,经常要对IE和FF进行分别处理,可以用如下代码:
    #content{
    color:red;
    }
    [xmlnx] #content{
    color:blue
    }
    此种方法我觉得很实用,也经常用,推荐朋友使用,如需更详细的说明,我可以再发贴。
    7.子对象选择符:
    span>p{color:red}
    IE6也是没有支持,也可用来区别IE和FF
    8、Tantek方法
    #content{
                color:blue;
                voice-family:”\”}\””;
                voice-family:inherit;
                color:red;
    }
    上面的代码在使用了voice-family之后下面的color:red,将不会被IE5.5及以下浏览器所解析.因此在IE6/7/FF上文本颜色将呈现红色,在IE5.5及以下浏览器上将呈现蓝色;
    另外,voice-family还有一种处理方式:
    #content{
                color:red;
                voice-family:”}”
                voice-family:inherit;
                color:blue;
    }
    使用这个方法,将使IE6及以下版本浏览器与FF浏览器的文字都呈现红色,而IE5及以下版本浏览器呈现蓝色!
    9、转义属性
    p{w\idth:200px;}
    IE5.5 以下将忽略。注意:反斜线字符不能出现在0-9或字母a-f前面
    10、IE中的条件注释
    一、条件注释简介
    IE中的条件注释(Conditional comments)对IE的版本和IE非IE有优秀的区分能力,是WEB设计中常用的
    hack方法。
    条件注释只能用于IE5以上。
    如果你安装了多个IE,条件注释将会以最高版本的IE为标准。
    条件注释的基本结构和HTML的注释(<!– –>)是一样的。因此IE以外的浏览器将会把它们看作是普通的
    注释而完全忽略它们。
    IE将会根据if条件来判断是否如解析普通的页面内容一样解析条件注释里的内容。
    二、条件注释属性
    gt : greater than,选择条件版本以上版本,不包含条件版本
    lt : less than,选择条件版本以下版本,不包含条件版本
    gte : greater than or equal,选择条件版本以上版本,包含条件版本
    lte : less than or equal,选择条件版本以下版本,包含条件版本
    ! : 选择条件版本以外所有版本,无论高低
    三、条件注释使用方法
    注意把代码中的<>换成英文中相应的大于或小于号
    <!–[if IE 5]>仅IE5.5可见<![endif]–>
    <!–[if gt IE 5.5]>仅IE 5.5以上可见<![endif]–>
    <!–[if it IE 5.5]>仅IE 5.5以下可见<![endif]–>
    <!–[if gte IE 5.5]>IE 5.5及以上可见<![endif]–>
    <!–[if ite IE 5.5]>IE 5.5及以下可见<![endif]–><!–[if !IE 5.5]>非IE 5.5的IE可见<![endif]
    –>
    下面的代码是在非IE浏览器下运行的条件注释
    <!–[if !IE]><!–>您使用不是 Internet Explorer<!–<![endif]–>
    <!–[if IE 6]><!–>您正在使用Internet Explorer version 6或者 一个非IE 浏览器<!–<![endif]-