浏览器优先级别:FireFox < IE7 < IE6
所谓优先级别 是指 浏览器的读取样式的顺序。
比如:IE6 > IE7 则如果书写样式为:
*background-color:red;
_background-color:blue;(关于'*'和'_'是什么意思 在下面会说明)
则在IE7中显示:红色的背景 在IE6中显示 蓝色的背景
但是如果把样式改成:
_background-color:red;
*background-color:blue;
则在IE7,IE6中均显示蓝色。
区别IE6 IE7 FF
在IE中 所有的版本都能区别 * 号,但是作为标准浏览器的FF不能识别
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title>
</head>
<style type="text/css">
.ieAndFf{
width:120px;
height:120px;
background-color:red;
*background-color:yellow;
}
</style>
<body>
<div class="ieAndFf"></div>
</body>
</html>
效果图如下:
下面例出 IE中能识别的特殊定义:
IE6 7 8:
.x{color:red !important;}
.x{color:#000} 显示为:红色
color:blue;
*color:red; 显示为:红色
color:blue;
color:red\9;显示为:红色
IE6:
color:blue;
_color:red;显示为:红色
IE8:
color:blue;
_color:red\0;//显示为:红色
关于谷歌的css hack
@media screen and (-webkit-min0device-pixel-ration:0){.............}
下面,张贴出百度的定义:
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
比如要分辨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}
此时在IE6下不支持,你将会发现定义了样式class="yuanxin"时,字体显示为黑色(#000)。
不包括如下这种形式的同一定义中的!important。
#pageOver{height:expression(document.documentElement.offsetHeight)!important;
height:100%;}此种形式的定义,IE6中是可以解释到important的。
-----------------------------------------------------------------------------------------------
IE6 IE7能识别*,也能识别!important;
FF不能识别*,但能识别!important;
IE6 IE7 FF
* √ √ ×
!important √
√ √
浏览器优先级别:FF<IE7<IE6,CSS hack书写顺序一般为FF IE7 IE6
以: " #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;
IE8 最新css hack:
"\9" 例:"border:1px \9;".这里的"\9"可以区别所有IE和FireFox.
"\0" IE8识别,IE6、IE7不能.
"*" IE6、IE7可以识别.IE8、FireFox不能.
"_" IE6可以识别"_",IE7、IE8、FireFox不能.
IE6 hack
_background-color:#CDCDCD; /* ie 6*/
IE7 hack
*background-color:#dddd00; /* ie 7*/
IE8 hack
background-color:red \0; /* ie 8/9*/
IE9 hack
background-color:blue \9\0;
火狐,遨游,及其它高级浏览器通用
background-color:red!important;
注意写hack的顺序,其中:
background-color:red\0;IE8和IE9都支持;background-color:blue\9\0; 仅IE9支持;
另外,background-color:eeeeee\9;的HACK支持IE6-IE8,但是IE8不能识别“*”和“_”的CSS HACK。
可综合上述规律灵活应用。
IE9 和 IE8 以及其他版本的区别说明
background-color:blue; 各个浏览器都认识,这里给firefox用;
background-color:red\9;\9所有的ie浏览器可识别;
background-color:yellow\0; \0 是留给ie8的,最新版opera也认识,后面自有hack写了给opera认的,所以,\0我们就认为是给ie8留的;
+background-color:pink; + ie7定了;
_background-color:orange; _专门留给神奇的ie6;
:root #test { background-color:purple\9; } :root是给ie9的,网上流传了个版本是 :root #test { background- color:purple\0;},这个,新版opera也认识,所以经笔者反复验证最终ie9特有的为:root 选择符 {属性\9;}
@media all and (min-width:0px){ #test {background-color:black\0;} } 这个是老是跟ie抢着认\0的神奇的opera,必须加个\0,不然firefox,chrome,safari也都认识。。。
@media screen and (-webkit-min-device-pixel-ratio:0){ #test {background-color:gray;} }最后这个是浏览器新贵chrome和safari的。
分享到:
相关推荐
本文将详细介绍如何编写针对不同浏览器的CSS兼容写法。 首先,我们可以使用特定的CSS选择器来让特定浏览器识别某些样式。例如,对于IE6,我们使用`*html .head{color:#000;}`,其中星号(*)前缀的选择器只有IE6会...
CSS Hack 不得不在一些项目中运用到
然而,由于不同的浏览器对CSS规范的实现存在差异,导致了跨浏览器的兼容性问题。解决这些问题,确保网页在所有主流浏览器中都能正常显示,是前端开发者必须面对的重要任务。以下是一些关于CSS兼容性的关键知识点: ...
然而,值得注意的是,尽管CSS hack在某些情况下是必要的,但随着浏览器标准的逐步统一和渐进增强(progressive enhancement)与优雅降级(graceful degradation)策略的广泛应用,直接解决浏览器兼容性问题比使用...
以下是针对各主流浏览器的一些CSS Hack写法: 1. **Firefox**: 使用`@-moz-document url-prefix()`来为Firefox编写特定的CSS规则。例如: ```css @-moz-document url-prefix() { .selector { property: value...
从而让各浏览器能达到一致的渲染效果,那么针对不同的浏览器写不同的CSS CODE的过程,就叫CSS HACK,同时也叫写CSS Hack这一节将和大家一起学习:浏览器兼容之旅的第二站:各浏览器的Hack写法
解决浏览器兼容性问题的一种主要方法是CSS Hack。CSS Hack是指针对不同浏览器编写特定的CSS代码,使同一段CSS在各个浏览器中都能得到预期的效果。例如,IE6能识别下划线 "_" 和星号 " * ",而IE7仅识别星号,Firefox...
然而,由于各浏览器对H5新特性的支持程度不一,开发者在实际应用中会遇到兼容性挑战,这正是CSS Hack的用武之地。 CSS Hack主要针对不同的浏览器或者特定版本的浏览器,通过特定的语法结构使得某些CSS规则只在特定...
CSS Hack 是一种有效的工具,可以帮助开发者解决跨浏览器兼容性问题。通过理解和掌握这些Hack技术,可以大大提高Web项目的兼容性和用户体验。当然,随着Web标准的发展和浏览器技术的进步,我们还应该关注新的解决...
浏览器兼容性问题一直是前端开发中的一个痛点,尤其是在CSS领域,由于各浏览器厂商对CSS标准的实现存在差异,导致相同的代码在不同浏览器上呈现的效果各异。本文将探讨解决CSS浏览器兼容性问题的四种策略。 首先,...
### CSS浏览器兼容性与IE中的Bug处理 #### CSS兼容性问题概述 在Web开发中,浏览器的兼容性问题一直是开发者需要面对的重要挑战之一。不同浏览器(如IE、Chrome、Firefox等)对CSS的支持程度和解释方式存在差异,...
- 为了兼容这两种不同的盒模型,可以使用条件注释或者特殊的CSS hack来针对特定浏览器编写样式。 4. **重要性属性(!important)**: - **支持情况**:Firefox支持使用`!important`来提高CSS属性的优先级,而IE在...
- CSS Hack是为了应对不同浏览器的解析差异而采用的一些特殊写法。例如,`height:100px;`是通用的,`_height:100px;`仅适用于IE6,`*+height:100px;`仅适用于IE7,`*height:100px;`适用于IE6和IE7,`height:100px!...
### 各浏览器兼容问题 #### 知识点一:浏览器渲染模式与X-UA-Compatible - **X-UA-Compatible**:此元标签用于控制IE浏览器的渲染引擎。例如: ```html ``` - `IE=edge`:表示使用最新的渲染模式。 - 可以...
由于不同浏览器所遵循...CSS Hack技术,就是利用不同浏览器不同版本之间的CSS实现的特性差异,来满足我们需要的效果:在所有主流浏览器上显示统一的效果,或者为特定浏览器显示特定的效果。 众所周知,如果在一个css样
在前端开发中,获取CSS样式是一项基础且重要的任务,它涉及到浏览器兼容性和各种不同方法的运用。本篇文章将深入探讨如何在不同的环境下有效地获取CSS样式,确保代码在各种浏览器上都能正常工作。 首先,让我们从...
在CSS中,由于各浏览器对某些规则或属性的支持程度不同,可能会导致样式显示不一致。为了确保页面在这些浏览器中都能正确呈现,开发者需要使用所谓的“CSS Hack”来解决这些问题。以下是一些常用的CSS Hack技巧: 1...