CSS hack由于不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,
对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。
这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,
能在不同的浏览器中也能得到我们想要的页面效果。
CSS Hack的原理是什么
由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。 CSS Hack大致有3种表现形式,CSS类内部Hack、选择器Hack以及HTML头部引用(if IE)Hack,CSS Hack主要针对 IE浏览器。 类内部Hack:比如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",而firefox两个都不能认识。等等 选择器Hack:比如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。等等 HTML头部引用(if IE)Hack:针对所有IE:<!--[if IE]><!--您的代码--><![endif]-->,针对IE6及以下版本:<!--[if lt IE 7]><!--您的代码--><![endif]-->,这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。 书写顺序,一般是将识别能力强的浏览器的CSS写在后面。下面如何写里面说得更详细些。
如何写CSS Hack
童鞋,如果你愿意,可以关注另外两篇关于 CSS Hacks 的文章哦!《CSS Hacks for IE,IE 也可以很完美》和《CSS 忍者:安全的 CSS hacks 秘籍》。
所谓 CSS Hack,是指在 CSS 代码中嵌入诸如 *,*html 等代码,方便于独立控制某种浏览器的具体样式。比如有些 CSS Hack 只能被 IE6 或 IE7 识别,而 Firefox 等浏览器则不能识别。这样一来可以有效控制 CSS 在不同浏览器的表现,避免撰写多个 CSS 文件。
芒果在这里大致整理了常用 CSS Hack 的写法,帮助你更好地控制页面呈现:
1. * 符号
IE 浏览器能识别 * 符号,但其他浏览器诸如 Firefox、Opera、Chrome 等不能识别 * 符号。
color:red;*color:blue; //在 Firefox 等非 IE 核心浏览器中,文字呈现红色;而 IE 中呈现蓝色。
2. !important
IE7 不但能识别 * 符号,还能识别 !important,而 IE6 只能识别前者。
例:在 IE6 和 IE7 中呈现不同的文字颜色:
color:red !important;color:blue; //在 IE7 浏览器中,文字呈现红色;而 IE6 中呈现蓝色。
综合 1 和 2,利用上述浏览器特性,可在 CSS 中判别 Firefox,IE7,IE6 并加载不同样式。
例:在 Firefox,IE7,IE6 中呈现三种不同文字颜色:
color:blue;*color:red !important;*color:green;
//在 Firefox 中,文字呈现蓝色,在 IE7 浏览器中,呈现红色;而 IE6 中呈现蓝色。
4. *html 和 *+html
IE 核心的浏览器能识别*html 和*+html,而 Firefox 等非 IE 核心浏览器不能识别。
例:在 Firefox,IE7,IE6 中呈现三种不同文字颜色:
#div {color:red;}
*html #div {color:green;}
*+html #div{color:blue;}
//第一句 Firefox 等可以正常识别,所以这些浏览器中文字呈红色;
//第二句 IE6 能识别并执行,用于针对 IE6 独立写的样式,文字绿色;
//第三句只有 IE7 才能正确识别,而 IE6 和其他非 IE 核心浏览器不能,文字呈蓝色。
本文介绍了CSSHack的基本原理及其在不同浏览器中的应用方式。通过特定的语法,可以实现仅针对某些浏览器的样式调整,确保网页在各种浏览器中都能呈现出一致的效果。
979

被折叠的 条评论
为什么被折叠?



