`
haohappy2
  • 浏览: 329124 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CSS hack for IE6/IE7/IE8/Firefox/Chrome/Safari

阅读更多

每次调css最令人头痛的就是浏览器校正问题,因为每个浏览器对css的解释都不太一样,firefox本身算是比较照规矩来,处理上比较简单,但是遇到微软的ie系列头 就大了,虽然都是ie,但是ie6、ie7、ie8各版本对css的解释又不一样,就算你本身已经在ie6调整好,但是在ie7看起来又是不一样,这时我们就得来对 各个浏览器设定不同的数值来解决版面移位的问题。

网路上有非常多关于css hack的教学文章,当然处理方法也有很多种,接下来要跟大家说明的是属于比较简单的方法,但是以下的校正确无法通过w3c检测,虽然无法通过检测,但是针对 各个浏览器校正确是有效的喔!

目前浏览器大宗还是属于ie6的天下,这原因主要是因为xp本身内建ie6,而且很多使用者很喜欢重灌xp,因此ie6仍占走了大半的浏览器天下,不过随着windows7的出现, 倒是有非常大的机会解决过气的ie6,因为windows7本身是内建ie8,微软的ie8对css的解释已经越来越标准,当然标准程度仍是不及firefox。

另外,如果要处理ie各版本浏览器的相容性问题,那一定要有各版本的ie浏览器可以浏览,但是微软作业系统内并没有让多版本的ie共存,为了让自己电脑内存在多种 版本的ie浏览器,那就赶快下载ietester来使用吧! 另外,也别忘记下载firefox来修正网页css喔!

——————————–我是分隔线——————————–
区别ie和firefox

【辨识符号】:「\9」

【范例练习】:

#tip {

background:blue; /*firefox 背景变蓝色*/

background:red \9; /*ie6、ie7、ie8背景变红色*/

}

【说明】:因为ie浏览器看得懂「\9」,但是非ie的浏览器一律看不懂,因此就可以用这个语法来区分ie和firefox(非ie浏览器,像是opera、google chrome 、safari等),因此以上css范例中,非ie浏览器是显示蓝色背景,ie系列浏览器是显示红色背景。

——————————–我是分隔线——————————–
区别ie6、ie7、ie8、firefox

【辨识符号】:「\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等)。

——————————–我是分隔线——————————–
区别ie6、ie7、firefox (方法 1)

【辨识符号】:「*」、「_」

【范例练习】:

#tip {

background:blue; /*firefox背景变蓝色*/

*background:black; /*ie7 背景变黑色*/

_background:orange; /*ie6 背景变橘色*/

}

【说明】:ie7和ie6可读「*」(米字号),ie6又可以读「_」(底线),但是ie7却无法读取「_」,至于firefox(非ie浏览器)则完全无法辨识 「*」和「_」,因此就可以透过这样的差异性来区分ie6、ie7、firefox,

——————————–我是分隔线——————————–
区别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。
区别ie7、firefox

【辨识符号】:「*」、「!important」

【范例练习】:

#tip {

background:blue; /*firefox 背景变蓝色*/

*background:green !important; /*ie7 背景变绿色*/

}

【说明】:因为firefox可以辨识「!important」但却无法辨识「*」,而ie7则可以同时看懂「*」、「!important」,因此可以两个辨识符号来区隔ie7和firefox。

——————————–我是分隔线——————————–
区别ie6、ie7 (方法 1)

【辨识符号】:「*」、「_」

【范例练习】:

#tip {

*background:black; /*ie7 背景变黑色*/

_background:orange; /*ie6 背景变橘色*/

}

【说明】:ie7和ie6都可以辨识「*」(米字号),但ie6可以辨识「_」(底线),ie7却无法辨识,透过ie7无法读取「_」的特性就能轻松区隔ie6 和ie7之间的差异。
区别ie6、ie7 (方法 2)

【辨识符号】:「!important」

【范例练习】:

#tip {

background:black !important; /*ie7 背景变黑色*/

background:orange; /*ie6 背景变橘色*/

}

【说明】:因为ie7可读取「!important;」但ie6却不行,而css的读取步骤是从上到下,因此ie6读取时因无法辨识「!important」而直接跳到下一行读 取css,所以背景色会呈现橘色。

——————————–我是分隔线——————————–
区别ie6、firefox

【辨识符号】:「_」

【范例练习】:

#tip {

background:black; /*firefox 背景变黑色*/

_background:orange; /*ie6 背景变橘色*/

}

【说明】:因为ie6可以辨识「_」(底线),但是firefox却不行,因此可以透过这样的差异来区隔firefox和ie6,有效达成css hack。

——————————–我是分隔线——————————–

关于ie6、ie7、ie8、firefox之间的css hack大概是以上那样,如果有疏漏或是有错误还烦请大家指证一下啰! 这些css hack是我目前看过比较简单的处理方式,当然如果你不会很在意css是否通过w3c的验证,你只会在意每个用户在不同的浏览器下阅读是否可以正常的话,其实以上css hack 对你来说是非常好用的,因为这些css hack如果善加利用确实可以正确的解决浏览器相容性问题。

以上的css hack参照了以下几篇文章所整理出来的,感谢以下文章的详细说明。

浏览器兼容问题一直是前段开发工程师比较头痛的问题,熟悉了里面的规则也就变得简单了,这里有一份资料可以分享给大家,大家平时开发过程中遵循这个规律的话,会变得轻松多了:

各浏览器CSS hack兼容表:

IE6 IE7 IE8 Firefox Chrome Safari
!important Y Y
_ Y
* Y Y
*+ Y
\9 Y Y Y
\0 Y
nth-of-type(1) Y Y

代码示例:

#test{
color:red; /* 所有浏览器都支持 */
color:red !important;/* Firefox、IE7支持 */
_color:red; /* IE6支持 */
*color:red; /* IE6、IE7支持 */
*+color:red; /* IE7支持 */
color:red\9; /* IE6、IE7、IE8支持 */
color:red\0; /* IE8支持 */
}

body:nth-of-type(1) p{color:red;} /* Chrome、Safari支持 */

整体测试代码示例:

.test{
color:#000000;
color:#0000FF\0;
[color:#00FF00;
*color:#FFFF00;
_color:#FF0000;
}

其他说明:

1、如果你的页面对IE7兼容没有问题,又不想大量修改现有代码,同时又能在IE8中正常使用,微软声称,开发商仅需要在目前兼容IE7的网站上添加一行代码即可解决问题,此代码如下:
<meta http-equiv=”x-ua-compatible” content=”ie=7″ />

2、body:nth-of-type(1) 如果这样写,表示全局查找body,将会对应第一个<body>。

3、还有其他写法,比如:
*html #test{}或者 *+html #test{}

4、*+html 对IE7的hack 必须保证HTML顶部有如下声明:

http://www.w3.org/TR/html4/loose.dtd

5、顺序:Firefox、IE8、IE7、IE6依次排列。

小知识:什么是CSS hack?

  由于不同的浏览器,比如IE6、IE7、IE8、Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。

  这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。

  这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack,也叫写CSS hack。

分享到:
评论

相关推荐

    IE6/IE7/IE8/Firefox/Chrome/Safari的CSS hack兼容一览表

    "IE6/IE7/IE8/Firefox/Chrome/Safari的CSS hack兼容一览表" 提供了一个宝贵的资源,帮助开发者解决在不同浏览器之间存在的CSS样式差异。下面我们将深入探讨这个话题,了解各种CSS hack及其在这些浏览器中的表现。 ...

    IE6、IE7、IE8、Firefox、Chrome、Safari的CSS hack兼容一览表

    ### IE6、IE7、IE8、Firefox、Chrome、Safari的CSS Hack兼容一览表 在Web开发过程中,为了确保网站能够在不同的浏览器中保持一致的显示效果,开发者常常需要运用CSS Hack技术来解决浏览器间的兼容性问题。CSS Hack...

    CSS兼容大全IE5,IE5.5,IE6,IE7,Firefox,Opera,Safari等浏览器

    CSS 兼容大全 IE5,IE5.5,IE6,IE7,Firefox,Opera,Safari 等浏览器 CSS 兼容大全是指在不同的浏览器中,例如 IE5,IE5.5,IE6,IE7,Firefox,Opera,Safari 等,如何使网页正常显示的技术。这个技术的核心是 CSS Hack,即...

    CSS hack技巧大全

    4. \9后缀:`\9`在IE6、IE7、IE8中识别,代表CSS2.1的滤镜特性。 5. \0后缀:`\0`在IE8及更高版本、Safari 3.1+、Chrome 1+中识别,针对CSS3的兼容。 6. @media screen and (-webkit-min-device-pixel-ratio:0):这...

    ie6、ie7、ie8、ie9、ie10、firefox、google chrome浏览器Hack及兼容性演示页面

    这里我们将深入探讨标题中提到的`ie6`到`ie10`以及`Firefox`和`Google Chrome`浏览器的兼容性问题,以及它们所基于的`Gecko`和`WebKit`内核。 首先,`IE6`至`IE10`是微软公司推出的一系列Internet Explorer浏览器,...

    解决CSS在IE与火狐下的兼容问题

    - 对于Firefox、Chrome、Safari等现代浏览器,一些CSS3特性需要加上厂商前缀,如`-moz-`、`-webkit-`等,以确保兼容。 4. **重置CSS(Reset CSS)** - 使用重置CSS可以消除浏览器默认样式差异,例如Eric Meyer的...

    css兼容与差别 IE6,IE7,IE8,FireFox,Opera,Safari.doc

    标题和描述中的文档"css兼容与差别 IE6,IE7,IE8,FireFox,Opera,Safari.doc"主要探讨的是如何解决这些浏览器中的CSS兼容性问题。 1. **浮动(float)**:在示例代码中,我们可以看到针对不同浏览器的浮动样式设置。`...

    IE6、IE7、Firefox之间的兼容写法

    通过本文介绍的各种CSS Hack技巧,可以有效解决IE6、IE7以及Firefox之间的兼容性问题。然而,在实际开发中,我们还应考虑更多的现代浏览器,如Chrome、Safari等,并尽可能采用更标准、更易于维护的方式来编写CSS代码...

    H5 CSS hack 和浏览器内核

    浏览器内核是解析和渲染网页内容的核心组件,常见的有Trident(IE)、Gecko(Firefox)、Webkit(Safari, Chrome)和Blink(Chrome, Opera)。每种内核对CSS的解析方式和对新特性的支持程度都有所不同,导致了CSS ...

    web前端规范之CSSHack.pdf

    Webkit阵型则涵盖Firefox、Chrome、Safari和Opera等,它们遵循更现代的CSS标准。 **国内与国外的浏览器使用情况** 在中国,由于历史原因,Windows操作系统和IE浏览器的广泛使用导致大部分用户倾向于使用基于IE内核...

    IE6、_IE7、IE8、Firefox兼容性问题

    在网页开发中,兼容性问题是一个常见且棘手的问题,尤其是涉及到老版本的Internet Explorer(IE6、IE7、IE8)和Firefox等其他浏览器。这些浏览器对于CSS(层叠样式表)的解析方式存在差异,导致在不同浏览器中页面...

    css hack div 布局

    接下来,我们看另一个更复杂的例子,区分IE5.5、IE6、IE7以及W3C标准浏览器的CSS hack: ```css .qq { background: #f00; /* w3c */ *background: #00f !important; /* IE7 */ _background: #0f0; /* IE6 */ _...

    ie chrome firefox 兼容

    WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"这样的字符串。 通过分析 userAgent 字符串,我们可以确定当前用户所使用的浏览器类型和版本信息。这对于实现浏览器兼容性...

    Css hack总结及其最佳用法

    虽然IE Hack占主导地位,但其他浏览器如Firefox、Chrome等也有少量的差异,可以通过CSS前缀如`-moz-`(Firefox)、`-webkit-`(Safari/Chrome)来针对特定浏览器实现特性。 6. **最佳实践**: - 尽量避免使用Hack...

    web前端规范之CSSHack[总结].pdf

    而Webkit阵营则包括Firefox、Chrome、Safari和Opera等,其中Chrome的市场份额已超过IE。 由于中国市场的特殊性,许多国内用户仍然使用IE内核的浏览器,尤其是旧版本。然而,随着技术的发展,一些新版本的国产浏览器...

    谷歌和safari webkit独有css hack

    由于这些浏览器的内核与Firefox、IE等使用的不同,因此存在一些特有的CSS特性或者行为。以下是一些常见的WebKit特有CSS Hack: 1. `-webkit-` 前缀:WebKit浏览器支持许多实验性的CSS属性,它们在正式标准化之前会...

    【css新增特性思维导图梳理】

    例如,`-webkit-` 适用于 Chrome 和 Safari,`-moz-` 用于 Firefox,`-ms-` 为 IE,`-o-` 代表 Opera。正确书写顺序是先写兼容性写法,然后放标准写法。例如: ```css -webkit-transform: rotate(-3deg); -moz-...

Global site tag (gtag.js) - Google Analytics