想必做网页设计的盆友们对各个浏览器的兼容问题很头疼吧 特别是可恶的 IE 家庭,强大
的 BUG 之国 带给网页设计师们的是伤不起啊,由于不同的浏览器对 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
比如要分辨 IE6 和 firefox 两种浏览器,可以这样写:
<style>
div{ background:green; /* for firefox */
*background:red; /* for IE6 */ (both IE6 && IE7) }
</style>
我在 IE6 中看到是红色的,在 firefox 中看到是绿色的。
解释一下:
上面的 css 在 firefox 中,它是认识不了后面的那个带星号的东东是什么的,于是将它过滤
掉,不予理睬,解析得到的结果 是:div{background:green},于是理所当然这个 div 的背景是
绿色的。
在 IE6 中 呢 , 它 两 个 background 都 能 识 别 出 来 , 它 解 析 得 到 的 结 果
是:div{background:green;background:red;},
于是根据优先级别,处在后面的 red 的优先级高,于是当然这个 div 的背景颜色就是红色的
了。
CSS hack:区分 IE6,IE7,firefox
区别不同浏览器,CSS hack 写法:
区别 IE6 与 FF: 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;
注:IE 都能识别*;标准浏览器(如 FF)不能识别*; IE6 能识别*,某些情况下不能识别 !
important,
-----------------------------------------------------------------------------------------------
IE6 支持重定义中的!important,例如: .yuanxin {color:#e00!important;} .yuanxin
{color:#000;}
你将会发现定义了样式 class="yuanxin"时,在 IE 下,字体显示为红色(#e00)。
但不支持同一定义中的!important。例如: .yuanxin {color:#e00!important;color:#000}
- 1
- 2
- 3
前往页