常用的CSS Hack技术集锦_html/css_WEB-ITnose

php中文网
发布: 2016-06-24 11:56:32
原创
1328人浏览过

来源: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:,针对IE6及以下版本:,这类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.admin10000.com</div>
登录后复制

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

集简云
集简云

软件集成平台,快速建立企业自动化与智能化

集简云 22
查看详情 集简云

再来看看:

<style type="text/css"> .demo{ color:red !important; } .demo { color:green; } </style> <div class="demo">www.admin10000.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的解释

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号