`

CSS 各浏览器兼容写法(CSS HACK)

阅读更多

浏览器优先级别: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兼容写法。 首先,我们可以使用特定的CSS选择器来让特定浏览器识别某些样式。例如,对于IE6,我们使用`*html .head{color:#000;}`,其中星号(*)前缀的选择器只有IE6会...

    CSS Hack 浏览器兼容写法 用法

    CSS Hack 不得不在一些项目中运用到

    各浏览器css兼容写法

    然而,由于不同的浏览器对CSS规范的实现存在差异,导致了跨浏览器的兼容性问题。解决这些问题,确保网页在所有主流浏览器中都能正常显示,是前端开发者必须面对的重要任务。以下是一些关于CSS兼容性的关键知识点: ...

    CSS hack浏览器兼容一览表

    然而,值得注意的是,尽管CSS hack在某些情况下是必要的,但随着浏览器标准的逐步统一和渐进增强(progressive enhancement)与优雅降级(graceful degradation)策略的广泛应用,直接解决浏览器兼容性问题比使用...

    各浏览器下Hack的写法

    以下是针对各主流浏览器的一些CSS Hack写法: 1. **Firefox**: 使用`@-moz-document url-prefix()`来为Firefox编写特定的CSS规则。例如: ```css @-moz-document url-prefix() { .selector { property: value...

    浏览器兼容之旅第二站:各浏览器的Hack写法让浏览器达到一致的渲染效果

    从而让各浏览器能达到一致的渲染效果,那么针对不同的浏览器写不同的CSS CODE的过程,就叫CSS HACK,同时也叫写CSS Hack这一节将和大家一起学习:浏览器兼容之旅的第二站:各浏览器的Hack写法

    浏览器兼容.doc-CSS hack姐姐兼容性问题

    解决浏览器兼容性问题的一种主要方法是CSS Hack。CSS Hack是指针对不同浏览器编写特定的CSS代码,使同一段CSS在各个浏览器中都能得到预期的效果。例如,IE6能识别下划线 "_" 和星号 " * ",而IE7仅识别星号,Firefox...

    H5 CSS hack 和浏览器内核

    然而,由于各浏览器对H5新特性的支持程度不一,开发者在实际应用中会遇到兼容性挑战,这正是CSS Hack的用武之地。 CSS Hack主要针对不同的浏览器或者特定版本的浏览器,通过特定的语法结构使得某些CSS规则只在特定...

    css_hack csshack技术

    CSS Hack 是一种有效的工具,可以帮助开发者解决跨浏览器兼容性问题。通过理解和掌握这些Hack技术,可以大大提高Web项目的兼容性和用户体验。当然,随着Web标准的发展和浏览器技术的进步,我们还应该关注新的解决...

    解决CSS浏览器兼容性问题的4种方案

    浏览器兼容性问题一直是前端开发中的一个痛点,尤其是在CSS领域,由于各浏览器厂商对CSS标准的实现存在差异,导致相同的代码在不同浏览器上呈现的效果各异。本文将探讨解决CSS浏览器兼容性问题的四种策略。 首先,...

    CSS浏览器兼容和IE中bug问题

    ### CSS浏览器兼容性与IE中的Bug处理 #### CSS兼容性问题概述 在Web开发中,浏览器的兼容性问题一直是开发者需要面对的重要挑战之一。不同浏览器(如IE、Chrome、Firefox等)对CSS的支持程度和解释方式存在差异,...

    div+css布局时的浏览器兼容问题

    - 为了兼容这两种不同的盒模型,可以使用条件注释或者特殊的CSS hack来针对特定浏览器编写样式。 4. **重要性属性(!important)**: - **支持情况**:Firefox支持使用`!important`来提高CSS属性的优先级,而IE在...

    最新web面试题css浏览器的兼容性问题.docx

    - 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 Hack技术,就是利用不同浏览器不同版本之间的CSS实现的特性差异,来满足我们需要的效果:在所有主流浏览器上显示统一的效果,或者为特定浏览器显示特定的效果。 众所周知,如果在一个css样

    获取css样式 兼容写法

    在前端开发中,获取CSS样式是一项基础且重要的任务,它涉及到浏览器兼容性和各种不同方法的运用。本篇文章将深入探讨如何在不同的环境下有效地获取CSS样式,确保代码在各种浏览器上都能正常工作。 首先,让我们从...

    css样式表兼容总结,兼容火狐,ie6,ie7,FF

    在CSS中,由于各浏览器对某些规则或属性的支持程度不同,可能会导致样式显示不一致。为了确保页面在这些浏览器中都能正确呈现,开发者需要使用所谓的“CSS Hack”来解决这些问题。以下是一些常用的CSS Hack技巧: 1...

Global site tag (gtag.js) - Google Analytics