一佳一

记录像1+1一样简洁的代码

导航

CSS hack IE6、7、8、FF浏览器兼容

Posted on 2010-08-21 08:28  一佳一  阅读(667)  评论(0编辑  收藏  举报
方法一:

 

   跨 浏览器的网页设计一直是让人很头疼的问题,这不只是因为浏览器的版本众多,还有一个重要的原因是相同浏览器的不同时期的 版本也会有差异, 甚至是在不同操作同台上还会有不同。因此使CSS hack技术进行浏览器区分是实现跨浏览器访问一个好方法。CSS Hack技术有很多,具体可以查看:

本文据说的主要是通过“.”,“>”,“*”,“_”来区分。以下是本人对这四种符号的测 试结果:
———————IE6——     IE7——IE8——FF2——FF3—     Opera9.5
>property——     Y——     Y——     Y——     N——     N——     N
.property——     Y——     Y——     Y——     N——     N——     N
*property——     Y——     Y——     Y——     N——     N——     N
_property——     Y——     N——     N——     N——     N——     N

我 们可以看到>property、.property、*property在各浏览器中的表现是一致的,只有_property在IE6和IE7、 IE8中有所区别。另外还要注意的,IE6是不支持!important的,而其他几款浏览器都识别。

举例:
要对想同的文字在不 同浏览器中显示不同的颜色可以使用:
color :brown !important ;   /*用于Opera、Firefox2、Firefox3等现代浏览器*/   
  1. > color : green !important ;     /*IE7、IE8可以识别该规则,因此它覆盖掉了上一条规则*/   
  2. color : red ;   /*所有浏览器都可以识 别,但是以上两条规则有!important,所以这条规则被忽视;只有IE6认识并覆盖掉上两条规则*/   
因 此这就实现了跨浏览器的表现问题。_property和*property也是一样的。对于_property来说,只有IE6才能识别,因此可以用于单 独对IE6的设置中。

不过这里要注意书写的顺序:现在浏览器的写法要写在最前面,IE6的写法要写在最后面用于覆盖,其他浏览器写在中 间。
方法二:
其 实主要是浏览器: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 !important ;* background:blue ;

注:IE都能识别* 标准浏览器(如FF)不能识别*
IE6 能识别* ,但不能识别 !important
IE7能识别* ,也能 识别!important
FF不能识别* ,但能 识别!important

另外再补充一个,下划线"_ ",
IE6支持下划线,IE7和firefox均不支持下划 线。(推荐.我这只有这个有效!)

于是大家还可以这样来区分IE6 IE7 firefox
: background:orange ;* background:green ;_ background:blue ;


* html   p {color:#f00;}          支持 IE6        不支持FF IE7 IE8b

*+html p {color:#f00;}          支持 IE7 IE8b        不支持FF IE6

p {*color:#f00;}          支持 IE7 IE6        不支持FF IE8

注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中 间,IE6的写在后面。

===========================================================================

1.区别IE和非IE浏览器

#tip {
background
:blue; /*非IE 背景藍色*/
background
:red \9; /*IE6、IE7、IE8背景紅色*/
}

2.区别IE6,IE7,IE8,FF
【区别符号】:「\9」、「*」、「_」
【示例】:
#tip {
background
:blue; /*Firefox 背景变蓝色*/
background
:red \9; /*IE8 背景变红色*/
*background
:black; /*IE7 背景变黑色*/
_background
:orange; /*IE6 背景变橘色*/
}
【说明】:因为IE系列浏览器可读「\9」,而IE6和IE7可读「*」(米字号),另外IE6可辨识「_」(底线),因此可以依照顺序写下来,就会让浏 览器正确的读取到自己看得懂得CSS语法,所以就可以有效区分IE各版本和非IE浏览器(像是Firefox、Opera、Google Chrome、Safari等)。

3.区别IE6、IE7、Firefox (方法 1)
【区别符号】:「*」、「_」
【示例】:
#tip {
background
:blue; /*Firefox背景变蓝色*/
*background
:black; /*IE7 背景变黑色*/
_background
:orange; /*IE6 背景变橘色*/
}
【说明】:IE7和IE6可读「*」(米字号),IE6又可以读「_」(底线),但是IE7却无法读取「_」,至于Firefox(非IE浏览器)则完全 无法辨识「*」和「_」,因此就可以透过这样的差异性来区分IE6、IE7、Firefox

4.区别IE6、IE7、Firefox (方法 2)
【区别符号】:「*」、「!important」
【示例】:
#tip {
background
:blue; /*Firefox 背景变蓝色*/
*background
:green !important; /*IE7 背景变绿色*/
*background
:orange; /*IE6 背景变橘色*/
}
【说明】:IE7可以辨识「*」和「!important」,但是IE6只可以辨识「*」,却无法辨识「!important」,至于Firefox可以 读取「!important」但不能辨识「*」因此可以透过这样的差异来有效区隔IE6、IE7、Firefox。

5.区别IE7、Firefox
【区别符号】:「*」、「!important」
【示例】:
#tip {
background
:blue; /*Firefox 背景变蓝色*/
*background
:green !important; /*IE7 背景变绿色*/
}
【说明】:因为Firefox可以辨识「!important」但却无法辨识「*」,而IE7则可以同时看懂「*」、「!important」,因此可以 两个辨识符号来区隔IE7和Firefox。

6.区别IE6、IE7 (方法 1)
【区别符号】:「*」、「_」
【示例】:
#tip {
*background
:black; /*IE7 背景变黑色*/
_background
:orange; /*IE6 背景变橘色*/
}
【说明】:IE7和IE6都可以辨识「*」(米字号),但IE6可以辨识「_」(底线),IE7却无法辨识,透过IE7无法读取「_」的特性就能轻鬆区隔 IE6和IE7之间的差异。

7.区别IE6、IE7 (方法 2)
【区别符号】:「!important」
【示例】:
#tip {
background
:black !important; /*IE7 背景变黑色*/
background
:orange; /*IE6 背景变橘色*/
}
【说明】:因为IE7可读取「!important;」但IE6却不行,而CSS的读取步骤是从上到下,因此IE6读取时因无法辨识 「!important」而直接跳到下一行读取CSS,所以背景色会呈现橘色。

8.区别IE6、Firefox
【区别符号】:「_」
【示例】:
#tip {
background
:black; /*Firefox 背景变黑色*/
_background
:orange; /*IE6 背景变橘色*/
}
【说明】:因为IE6可以辨识「_」(底线),但是Firefox却不行,因此可以透过这样的差异来区隔Firefox和IE6,有效达成CSS hack。
来自: http://hi.baidu.com/lzxassj/blog/item/c78935fbb01f582f4f4aeaee.html