常用的csshack

Mdreame      2022-02-07     488

关键词:

一、什么是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:red9; /* IE6、IE7、IE8、IE9 识别 */
color:red; /* IE8、IE9 识别*/
color:red9; /* 仅IE9识别 */
color:red ; /* 仅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:red9; } : /* 仅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的这个问题。最好的方法就是,不要用类组合的形式。

作者: GD_SeHun
链接:http://www.imooc.com/article/3513
来源:慕课网

































































csshack

什么是CSShack由于不同的浏览器,甚至同一浏览器的不同版本对CSS的解析认识不一样,导致生成的页面效果不一致,写出针对不同浏览器CSScode就称为CSShack。常用的CSShack有三种方式,CSS内部hack、选择器hack、HTML头部引用,其中第... 查看详情

csshack

CSSHack:不同厂家的浏览器或者相同厂家不同版本的浏览器对于css的解析是不完全相同的,这样就导致了浏览器的页面生成的效果会不一样。CSSHack的作用就是使得css在不同的浏览器中兼容,让不同的浏览器生成我们想要的效果的... 查看详情

csshack(ie6-ie9+)

IE6csshack:1.*htmlSelector{}/*Selector表示css选择器下同*/2.Selector{_property:value;}/*property:value表示css的属性名:属性值下同*/3.Selector{_property/**/:/**/value;}4.Selector{-property:value;}/*IE6csshack常用习惯推荐使用下划线_* 查看详情

css兼容解决之hack

什么是CSShack由于不同的浏览器,甚至同一浏览器的不同版本对CSS的解析认识不一样,导致生成的页面效果不一致,写出针对不同浏览器CSScode就称为CSShack。常用的CSShack有三种方式,CSS内部hack、选择器hack、HTML头部引用,其中第... 查看详情

转part2——csshack技巧大全

 ——作者:吴雷君兼容范围:IE:6.0+,FireFox:2.0+,Opera10.0+,Sarari3.0+,Chrome参考资料:各游览器常用兼容标记一览表:标记IE6IE7IE8FFOperaSarari[*+><]√√XXXX_√XXXXX9√√√XXX 查看详情

csshack

   CSShack用来解决有些css属性在不同浏览器中显示的效果不一样的问题。CSShack的目的就是使你的CSS代码兼容不同的浏览器。  csshack指各版本及各品牌浏览器之间对CSS解释后出现网页内容的误差的处理.简单的说cs... 查看详情

csshack

 CSShack的原理由于不同的浏览器和浏览器各版本对CSS的支持及解析结果不一样,以及CSS优先级对浏览器展现效果的影响,我们可以据此针对不同的浏览器情景来应用不同的CSS。  CSShack分类CSSHack大致有3种表现形式,CSS... 查看详情

csshack

前面的话  CSSHack是实现浏览器样式兼容的兜底办法,能不用就尽量不要使用。但是,针对一些浏览器的bug,比如老版本IE的bug,有时使用CSSHack是不得已而为之的做法。本文将详细介绍CSSHack。CSSHack主要分为属性标记法和选择器... 查看详情

csshack

前面的话  CSSHack是实现浏览器样式兼容的兜底办法,能不用就尽量不要使用。但是,针对一些浏览器的bug,比如老版本IE的bug,有时使用CSSHack是不得已而为之的做法。本文将详细介绍CSSHack。CSSHack主要分为属性标记法和选择器... 查看详情

csshack

1、什么是CSShack?CSShack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSShack就是让你记住这个标准),以达到应用不同的CSS样式的目的,比如.kwstu{width:300... 查看详情

csshack

之前一直很狭隘的对CSShack持有偏见,觉得写得规范的代码不应该使用这些“邪门歪道”,可最近产品发布一个小问题却让我头疼了很久,最后查了一下资料,竟然使用CSShack轻松解决了,不得不服啊,对付神奇的IE就得使用... 查看详情

csshack

之前一直很狭隘的对CSShack持有偏见,觉得写得规范的代码不应该使用这些“邪门歪道”,可最近产品发布一个小问题却让我头疼了很久,最后查了一下资料,竟然使用CSShack轻松解决了,不得不服啊,对付神奇的IE就得使用这些... 查看详情

csshack大全

 1、什么是CSShack?CSShack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSShack就是让你记住这个标准),以达到应用不同的CSS样式的目的,比如.kwstu{wid... 查看详情

csshack技术

首先我们要了解一个概念CSShack不同浏览器,比如IE6、IE7、IE8,MozillaFirefox等,对CSS的支持及解析结果不同,因此会导致相同的网页生成的页面效果不一样。这个时候我们就需要针对不同的浏览器去定义不同的CSS,让它能够同时兼... 查看详情

经常使用的csshack技术集锦

来源:http://www.ido321.com/938.html一、什么是CSSHack?不同的浏览器对CSS的解析结果是不同的,因此会导致同样的CSS输出的页面效果不同,这就须要CSSHack来解决浏览器局部的兼容性问题。而这个针对不同的浏览器写不同的CSS代码的过... 查看详情

csshack

1、什么是CSShack?CSShack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSShack就是让你记住这个标准),以达到应用不同的CSS样式的目的,比如.kwstu{width:300... 查看详情

什么是csshack?

1、什么是CSShack?CSShack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSShack就是让你记住这个标准),以达到应用不同的CSS样式的目的,比如.kwstu{width:300... 查看详情

csshack

转自CSDNfreshlover的博客专栏《史上最全CSSHack方式一览》什么是CSShack由于不同厂商的流览器或某浏览器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持、解析不一样,导致在不同浏览器的环境中呈现出不一致的页面... 查看详情