CSS Hack技术介绍及常用的Hack技巧集锦

  发布时间:2014-10-08 09:29:54   作者:佚名   我要评论
这篇文章主要介绍了CSS Hack技术介绍及常用的Hack技巧集锦,本文讲解了什么是CSS Hack、常用的CSS Hack、IE6对!important的支持、IE6下的多选择符等内容,需要的朋友可以参考下

一、什么是CSS Hack?

不同的浏览器对CSS的解析结果是不同的,因此会导致相同的CSS输出的页面效果不同,这就需要CSS Hack来解决浏览器局部的兼容性问题。而这个针对不同的浏览器写不同的CSS 代码的过程,就叫CSS Hack。

CSS Hack常见的有三种形式:CSS属性Hack、CSS选择符Hack以及IE条件注释Hack, Hack主要针对IE浏览器。

1、属性级Hack:比如IE6能识别下划线”_”和星号” * “,IE7能识别星号” * “,但不能识别下划线”_”,而firefox两个都不能认识。

2、选择符级Hack:比如IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。

3、IE条件注释Hack:IE条件注释是微软从IE5开始就提供的一种非标准逻辑语句。比如针对所有IE:<!–[if IE]><!–您的代码–><![endif]–>,针对IE6及以下版本:<!–[if lt IE 7]><!–您的代码–><![endif]–>,这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都 会生效。

PS:条件注释只有在IE浏览器下才能执行,这个代码在非IE浏览下被当做注释视而不见。可以通过IE条件注释载入不同的CSS、JS、HTML和服务器代码等。

二、常用的CSS Hack


复制代码
代码如下:

/* CSS属性级Hack */
color:red; /* 所有浏览器可识别*/
_color:red; /* 仅IE6 识别 */
*color:red; /* IE6、IE7 识别 */
+color:red; /* IE6、IE7 识别 */
*+color:red; /* IE6、IE7 识别 */
[color:red; /* IE6、IE7 识别 */
color:red\9; /* IE6、IE7、IE8、IE9 识别 */
color:red\0; /* IE8、IE9 识别*/
color:red\9\0; /* 仅IE9识别 */
color:red \0; /* 仅IE9识别 */
color:red!important; /* IE6 不识别!important*/
-------------------------------------------------------------
/* CSS选择符级Hack */
*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、Safari、Opera 可以识别 */
:root #demo { color:red\9; } : /* 仅IE9识别 */
--------------------------------------------------------------
/* IE条件注释Hack */
<!--[if IE]>此处内容只有IE可见<![endif]-->
<!--[if IE 6]>此处内容只有IE6.0可见<![endif]-->
<!--[if IE 7]>此处内容只有IE7.0可见<![endif]-->
<!--[if !IE 7]>此处内容只有IE7不能识别,其他版本都能识别,当然要在IE5以上。<![endif]-->
<!--[if gt IE 6]> IE6以上版本可识别,IE6无法识别 <![endif]-->
<!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]-->
<!--[if lt IE 7]> 低于IE7的版本才能识别,IE7无法识别。 <![endif]-->
<!--[if lte IE 7]> IE7以及IE7以下版本可识别<![endif]-->
<!--[if !IE]>此处内容只有非IE可见<![endif]-->

三、IE6对!important的支持

!important一般用来做区分IE6和Firefox等浏览器的基本Hack手法。因为IE6不支持!important,而Firefox能读懂!important,其改变了样式的优先级。其实IE6在某些情况下,也能认识!important。

例如:

复制代码
代码如下:

<style type="text/css">
.demo{
color:red !important;
color:green;
}
</style>
<div class="demo">www.jb51.net</div>

上面代码在FF下字体为红色、IE6下字体为绿色。说明IE6忽视!important的存在。

再来看看:


复制代码
代码如下:

<style type="text/css">
.demo{ color:red !important; }
.demo { color:green; }
</style>
<div class="demo">www.jb51.net</div>

如果IE6不认!important的话,上面代码.demo的内容应该显示为绿色,可偏偏不是,.demo的内容显示为红色,说明IE6是认得!important的。

两种情况的区别就在于:当在一个选择器中,利用!important改变样式优先级的时候,IE6下是无效的,后面的样式覆盖了前面的,!important被彻底无视了,利用!import

四、IE6下的多选择符

多类选择符的写法。例如:

复制代码
代码如下:

#my.c1.c2 { color:red;}
.c1.c2 { color:red;}

以上写法在IE7+/FF/Opera/Safari 等浏览器都支持。

但在IE6中,后一个类名会覆盖前一个类名,也就是说,上例被IE6理解为:

复制代码
代码如下:

#my.c2 { color:red;}
.c2 { color:red;}

同理:

复制代码
代码如下:

#my.c1.c2.c3 { color:red;}

IE6理解为 #my.c3 {color:red;}

复制代码
代码如下:

.c1.c2.c3 { color:red;}

IE6理解为 .c3 { color:red; }

所以开发中用多类来组合实现css效果的时候,注意IE6的这个问题。最好的方法就是,不要用类组合的形式。

相关文章

  • 10个必备的CSS技巧总结

    这篇文章主要介绍了10个必备的CSS技巧总结,随看随记,敬请收藏~需要的朋友可以参考下
    2015-06-29
  • 要知道的10个CSS技巧

    CSS是网页设计师的基础,对CSS的了解能使他们能够设计出更加美观别致的网页。使用CSS技巧来巧妙地处理CSS是非常令设计师着迷的事情。在CSS的深海世界里有很多有意思的东西
    2013-04-09
  • 最常用和实用的CSS技巧

    最常用和实用的CSS技巧,不论是前台美工还是后台成员人员都需要注意的地方。
    2010-01-05
  • 21个神奇的CSS技巧

    层叠样式表(CSS)是现代的网站设计不可或缺的重要组成部分,就像10年前那样,没有它网站就会显得是丑陋的。随着时间的推移,网络中的CSS的教程质量已有显著的提高。
    2009-10-27
  • 网页制作中应用的50个CSS技巧(国外)

    几乎可以肯定的CSS是最好的一个网页设计的发展,因为第一次图形的Web浏览器通过了关于大规模,凡表创建笨重,缓慢加载网页,创建的CSS更加精简和实用的网页。
    2009-08-03
  • CSS技巧:IE6用import导入CSS的问题

    网页制作Webjx文章简介:本文描述了一个在IE6下用import导入CSS的问题! 在ie 6中可以先写CSS再加import比如 p {} @import url("base.css");
    2009-04-02
  • 书写CSS的5个小技巧让你的样式更规范

    CSS在书写过程中会一些小技巧,会省时省力,比如按字母顺序来排列css、先标记 后css等等,本文整理了一些,感兴趣的朋友可以参考下希望对大家书写css有所帮助
    2013-08-13
  • CSS hack技巧之IE6,IE7,firefox显示不同效果

    区别不同浏览器的CSS hack写法
    2010-03-06
  • IE6、IE7和FF的最简单的hack技巧-CSS教程-网页制作-网页教学网

      关于CSS HACK的文章在webjx.com中提及的也很多。   CSSer必须掌握的关于IE6、IE7和FF的最简单的hack技巧。 FF浏览器 .test{ height:20px; background-co
    2008-10-17
  • CSS常用技巧之CSS书写技巧和CSS HACK技巧

    不同的浏览器对CSS的解析结果是不同的,因此会导致相同的CSS输出的页面效果不同,这就需要CSS Hack来解决浏览器局部的兼容性问题,本文给大家分享CSS常用技巧之CSS书写技巧
    2016-01-12

最新评论