来源:http://www.ido321.com/938.html

一、什么是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]–>,针对IE7以下版本:<!–[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.ido321.com</div>

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

再来看看:

<style type="text/css">
.demo{ color:red !important; }
.demo { color:green; }
</style>
<div class="demo">www.ido321.com</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的这个问题。最好的方法就是,不要用类组合的形式。

下一篇:IE 8兼容:X-UA-Compatible的解释

转载于:https://www.cnblogs.com/ido321/p/4018145.html

常用的CSS Hack技术集锦相关推荐

  1. css hack技术整理

    做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现.我个人是不太推荐使用hack的,要知道 ...

  2. 浏览器兼容css hack,CSS Hack技术解决多浏览器兼容问题

    本文向大家描述一下如何使用CSS Hack技巧解决DIV+CSS布局多浏览器兼容问题,针对不同的浏览器写不同的CSS代码的过程,就叫CSS Hack,相信本文介绍一定会让你有所收获. CSS Hack ...

  3. 常用的 css hack实例

    注意顺序: #menu {  line-height: 23px; }/* firefox 浏览器实行这句定义 */ #menu { line-height: 26px\9; }/*ie6,ie7,i ...

  4. 整理的一些常用的CSS HACK

     ie8以下兼容透明都和支持CSS圆角,这两个都要在服务器上才看到效果,可以本地搭建一个服务器如IIS -pie-background: rgba(255, 255, 255, 0.10);/*IE6 ...

  5. 一些常用的CSS hack代码

    一.清零代码:因为不同的浏览器,默认的初始值是不同的,用清零代码把这些默认值高置为0是很有必要的. body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, ...

  6. 网站开发笔记【四】css hack技术

    1.如何让文字居中显示 类型     单行文字 单行文字可以设置line-height和height一样.   多行文字(高度不固定) 可以设置padding在外层的包容容器中. 如:设置paddin ...

  7. css hack 学习总结

    css hack CSS hack由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是 同一厂商的浏览器的不同版本,如IE ...

  8. 什么事css+hack,css hack的理解

    什么是CSS hack 由于不同厂商的流览器或某浏览器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持.解析不一样,导致在不同浏览器的环境中呈 ...

  9. CSS Hack汇总(转载)

    CSS hack是指我们为了兼容各浏览器,而使用的特别的css定义技巧.这是国外摘来的一张CSS hack列表,显示了各浏览器对css hack的支持程度,对我们制作兼容网页非常有帮助. 现在浏览器的 ...

  10. CSS Hack 汇总速查一览

    由于浏览器之间存在兼容性问题,在制作网页的时候,为了使页面能在不同浏览器中显示相对一致或者其他原因,网页制作人员总结了种种 Hack 方法:在解 决兼容性问题之前,这些方法还经常会用到.接下来,大前端 ...

最新文章

  1. 字节跳动java笔试题目_牛客网--字节跳动面试题--特征提取
  2. caffe基础(7): 命令行解析
  3. linux 安装svn客户端
  4. php 首页加背景图片,如何在页首添加一张背景图片
  5. c++ getline 读不到东西_C++,使用getline一直读取不到文件中的内容
  6. .whl文件打开方式 Python
  7. java创造新世界_创建新世界闪退求解决
  8. python不会英语不会数学怎么自学-学习Python,数学英语基础很重要吗?
  9. OpenCV_用形态学运算变换图像
  10. RFS实例登录126邮箱/利用cookie登陆百度
  11. 从零起步做到运维技术经理,你必须掌握的23个细节!
  12. 计算机怎么通电启动,怎么让电脑一通电就立即开机?
  13. ADC类型和技术指标
  14. 三、基本CRUD操作
  15. 现代修谱,如何处理族员离婚再娶,配偶携子改嫁同服弟等情况
  16. 没有要使用本计算机 用户必须输入密码,要使用本计算机,用户必须输入用户名和密码选项不见了怎么办...
  17. 给大家分享一个好的短信接口.
  18. 随笔——【读书笔记】读书带给我的改变与思考
  19. UltraEdit发布了Linux版-UEX
  20. UE4 AR 开发问题记录!

热门文章

  1. 有趣的算法(五):一文读懂二叉搜索树的插入、删除
  2. Count-Min Sketch 算法
  3. 软件测试常见断言,5.6 postman 常用的断言
  4. python读取第一行设为字典_将csv读入字典,第一行成为名称
  5. Eclipse开发Android
  6. The block problem poj1208
  7. python--os
  8. 创建第一个windows服务
  9. 690 - Pipeline Scheduling (DFS + 状态压缩 + 剪枝)
  10. linux下mono播放PCM音频