css hack
的有关信息介绍如下:CSS hack 是CSS中的一种作弊手段,因为目前所有浏览器并没有统一对CSS的支持,例如同样是一个margin:1px,可能在不同的浏览器中出现的效果就一定是1px
在这种情况下,我们只能借助于CSS hack来暂时过渡这个阶段,CSS hack就比如是IE能认出的CSS语句,而FF不能认出,这样就能达到我们的目的了,css hack在很多高级的技巧中出现,不过并不是很推荐使用,毕竟未来的css趋势还不是很明了,尽量避免吧
因为很多css错位问题其实并不是浏览器的错误,而是我们本身的编辑出现的错误。
关于css hack更详细的说明,在CSS黑板报上有更详细的
可以直接百度:CSS黑板报,第一个就是了。加油!
CSS HACK就是CSS招数.
因为任何浏览器都有漏洞,但是每一个漏洞都可以用编写的CSS来解决,这种用CSS编写的一系列代码就被CSS代码人员称为CSS HACK。
CSS HACK这个名词什么时候具体出现的我不太清楚,但是这并不重要,重要的是只要浏览器有漏洞,CSS HACK就肯定会出现,只是当时没有专用的名词。
我知道的就这么多,LZ想知道更多可以上网找找资料。
css hack是什么时候出来的技术?
那得看浏览器的历史了,世界上第一个浏览器90年就出来了,微软是95年进军浏览器市场的,应该是那之后没多久就出现的……
Hack是怎么产生的?
由于不同的浏览器,比如IE6,IE7,Firefox等,对CSS的解析标准不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。
这时我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中得到想要的相同的效果。
这个针对不同的浏览器写不同的CSS的过程,就叫css hack。
CSS Hack的原理是什么?
由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。
比如 IE6能识别"_"(下划线)"*",IE7能识别" * "(星号)不能识别下划线"_",而firefox两个都不能识别。
怎么写CSS Hack?
示例1,比如要区别IE6和firefox两种浏览器,可以这样写:
div{
background:green; /* for firefox */
*background:red; /* for IE6 */
}
在IE6中看到是红色的,在firefox中看到是绿色的。
注释:在firefox中,它认不出后面的带星符号,于是将这条css规则过滤掉,不予理睬,以上解析得到的结果是:div{background:green},于是这个div的背景是绿色的。在IE6中呢,它两个background都能识别出来,它解析得到的结果是:div{background:green;background:red;},于是根据优先级别,处在后面的red的优先级高,于是这个div的背景颜色就是红色的了。
示例2, hack来区分IE6,IE7,firefox:
区别IE6与FF(代表firefox): background:orange;*background:blue;
区别IE6与IE7:background:green !important;background:blue;
区别IE7与FF:background:orange; *background:green;
区别FF、IE7、IE6:background:orange;*background:green;_background:blue;
background:orange;*background:green !important;*background:blue;
提示:书写顺序一般是将识别能力强的浏览器的CSS写在后面。
小结
1.IE都能识别*;标准浏览器(例如FF)不能识别*;
2.IE6能识别*,但不能识别 !important,
3.IE7能识别*,也能识别!important;
4.FF不能识别*,但能识别!important;
提示:浏览器优先级别:FF< SPAN>所以hack的书写顺序一般为FF IE7 IE6 。
CSS hack由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。 这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。
简单的说,CSS hack的目的就是使你的CSS代码兼容不同的浏览器。当然,我们也可以反过来利用CSS hack为不同版本的浏览器定制编写不同的CSS效果。
这是为了浏览器的兼容
其实就是针对不同浏览器写不同css代码
针对一些浏览器识别特性使用特殊符号来让不同浏览器去解析各自css代码,达到兼容性
如:火狐下不认识*,ie6下不识别!important
以: " #demo {width:100px;} "为例;
#demo {width:100px;} /*被FIREFOX,IE6,IE7执行.*/
* html #demo {width:120px;} /*会被IE6执行,之前的定义会被后来的覆盖,所以#demo的宽度在IE6就为120px; */
*+html #demo {width:130px;} /*会被IE7执行*/
---------------
所以最后,#demo的宽度在三个浏览器的解释为:
FIREFOX:100px;
ie6:120px;
ie7:130px;