`
deng131
  • 浏览: 677743 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Css Hack原理及方法汇总

阅读更多
什么是CSS Hack呢?
为解决浏览器间的CSS兼容性问题,设计师们针对不同浏览器写不同的CSS code的过程,就是一个Hack的过程了。在这个过程中,不但要做到浏览器的兼容性,更要合理地做到CSS代码的绝对优化,尽可能少地人为制造冗余的代码,使CSS代码尽可能简练易读。

为什么要用CSS Hack呢?
通过对CSS代码的兼容性问题的解决,使得我们写出的页面能在不同的浏览器中达到统一的页面效果。

CSS Hack原理是什么?
根据不同浏览器对CSS样式的支持程度,解析结果和识别CSS的优先级不同,设计师们就可以根据这些不同浏览器的特点来书写不同的 CSS样式代码。IE6能识别下划线_和星号*,IE7能识别星号*,不能识别下划线_,而firefox两个都不能识别,如此,就可以针对 IE6.IE7和FF通过对这些特殊符号的使用写不同的代码了。

由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。

比如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",而firefox两个都不能认识。等等
  书写顺序,一般是将识别能力强的浏览器的CSS写在后面。下面如何写里面说得更详细些。

  比如要分辨IE6和firefox两种浏览器,可以这样写:
  <style>
  div{
  background:green; /* for firefox */
  *background:red; /* for IE6 */
  }
  </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)。
  
  IE7能识别*,也能识别!important;
  FF不能识别*,但能识别!important;
  IE6 IE7 FF
  * √ √ ×
  !important × √ √

浏览器优先级别:FF<IE7<IE6,CSS hack书写顺序一般为FF IE7 IE6
测试浏览器:ie5.0 ie5.5 ie6.0 ie7.0 firefox2.0.0.11 opera9.10 safari3.04(pc)

测试过程:
[非标准类]
property\:value      /* ie5.5 */
*property:value      /* ie5.0 ie5.5 ie6.0 ie7.0*/
_property:value      /* ie5.0 ie5.5 ie6.0*/
Selector\    /* ie6.0 ie7.0 */
Selector, x:-moz-any-link      /*ff ie5.0 ie7.0*/
>Selector    /*ie5.0*/
<Selector {} /*只有IE5.0可识别*/ 
*html Selector\ {}  /*只有 IE6.0可识别*/ 
*+html Selector\ {} /*只有IE7.0可识别*/
[标准类]
property /**/:value      /*屏蔽ie6.0*/
property/**/:value      /*屏蔽ie5.0*/
*html selector      /*只对ie6及以下有效*/
*:first-child+html selector      /*只对ie7有效 */
html>/**/body selector      /*屏蔽所有ie*/

property /**/:value     /* ie5.0 ie5.5 ie7.0 ff2.0 op9.1 sf3 */        

Selector/**/    property/**/:value      /* ie5.5 ie6.0 ie7.0 ff2.0 op9.1 sf3 */
Selector/**/    property/**/:value      /* ie5.5 ie6.0 ie7.0 ff2.0 op9.1 sf3 */property /**/:value     /* ie5.0 ie5.5 ie7.0 ff2.0 op9.1 sf3 */        
Selector/**/    property/**/:value      /* ie5.5 ie6.0 ie7.0 ff2.0 op9.1 sf3 */
*:first-child+html {} * html Selector   /* ie5.0 ie5.5 ie6 */
*:first-child+html Selector      /* ie7.0 */
html[xmlns*=”"] body:last-child Selector  /* safari */
html:first-child Selector  /* op9.0及以下 */head + body Selector    /* ie7.0 ff2.0 op9.1 sf3.0 */

测试结果[常用]:
[快捷HACK方法推荐]
*property:value      /*对ie7及以下有效*/
_property:value      /*对ie6及以下有效*/
property /**/:value      /*屏蔽ie6*/

[标准版HACK方法]
html>/**/body  Selector     /* ff2.0 op9.1 sf3.0 */
* html Selector      /* ie5.0 ie5.5 ie6 */
*+html Selector      /* ie5.0 ie7.0 */

最简单CSS Hack: 区分 IE6 / IE7 /IE8 /Firefox
.color{
background-color: #CC00FF; /*所有浏览器都会显示为紫色*/
background-color: #FF0000\9; /*IE6、IE7、IE8会显示红色*/
*background-color: #0066FF; /*IE6、IE7会变为蓝色*/
_background-color: #009933; /*IE6会变为绿色*/
}

参考:
http://www.positioniseverything.net/explorer.html
http://blog.lastkite.com/2010/css-hack/
http://www.cnblogs.com/lhb25/archive/2010/01/26/1656801.html
http://www.cnblogs.com/pittzh/archive/2009/07/23/1529769.html
分享到:
评论

相关推荐

    史上最全的CSS hack方式一览.mhtml

    史上最全的CSS hack方式一览.mhtml史上最全的CSS hack方式一览.mhtml史上最全的CSS hack方式一览.mhtml史上最全的CSS hack方式一览.mhtml史上最全的CSS hack方式一览.mhtml史上最全的CSS hack方式一览.mhtml史上最全...

    css_hack csshack技术

    ### CSS Hack 技术详解及应用 #### 一、引言 随着互联网技术的发展,Web前端开发变得越来越重要。然而,在实际开发过程中,一个不容忽视的问题便是**跨浏览器兼容性**。由于不同浏览器(包括同一浏览器的不同版本...

    CSS hack技巧大全

    总之,CSS Hack是一种解决浏览器差异的有效方法,但应谨慎使用,因为它们可能导致代码难以维护和扩展。尽量遵循浏览器最佳实践,利用最新的CSS规范,以及使用前缀和媒体查询来实现更好的跨浏览器兼容性。同时,持续...

    CSS hack汇总

    ### CSS Hack 汇总:解决 IE6,IE7,IE8 及 Firefox 的兼容性问题 在网页设计与开发领域,确保不同浏览器间的代码兼容性是一项挑战性的任务,尤其是在处理像 Internet Explorer 6(IE6)、IE7、IE8 和 Firefox 这些...

    CSS Hack 浏览器兼容文档

    1. **CSS Hack原理**: 不同的浏览器对某些CSS特性或者字符的识别有所不同。例如,星号(*)在IE6和IE7中被识别为一个选择器前缀,但在FF、IE8及更高版本中不被识别;叹号important(!important)在除IE6外的所有...

    CSSHack解决兼容

    CSSHack解决兼容

    CSSHACK资料详细汇总

    以下将详细介绍几种常见的CSS Hack方法及其应用场景。 #### 1\. !important Hack 此Hack主要针对IE7及以上版本和Firefox等现代浏览器。通过使用`!important`,可以覆盖默认样式或特定条件下的样式设置。例如: ``...

    css hack,escape from css hack

    10. **代码管理和版本控制**:使用版本控制系统(如Git)和模块化CSS(如BEM、SMACSS等方法论)可以帮助管理代码,减少hack的出现。 文件`css_browser_selector.js`和`css_browser_selector.php`可能包含了...

    css hack浏览器兼容性

    css hack ie6 ie7 ie8 firefox等浏览器兼容性

    CSS hack 兼容标识.rar_CSS hack 兼容标识

    常见的CSS Hack方法包括属性前缀、特殊字符法、选择器Hack和条件注释等。 1. **属性前缀**:一些浏览器,如Firefox和Chrome,支持Webkit引擎特有的CSS扩展属性,如`-webkit-transform`用于旋转、缩放等。而IE浏览器...

    CSS hack-CSS

    CSS Hack是一种针对不同浏览器之间的CSS解析差异而采取的技术策略,目的是确保网页在各种浏览器中都能得到预期的渲染效果。在Web开发中,由于Internet Explorer(尤其是IE6和IE7)与其他标准兼容的浏览器(如Firefox...

    区别不同浏览器CSS hack

    ### 区别不同浏览器CSS Hack知识点详解 #### CSS Hack简介 在Web开发过程中,由于不同浏览器对CSS的支持程度不一,导致同一段CSS代码在不同的浏览器中可能呈现出不同的效果。为了确保网页能在各种浏览器中正常显示...

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

    然而,随着浏览器更新迭代,新的CSS规范被广泛采纳,现代浏览器对CSS3的支持越来越完善,CSS hack的使用应尽可能减少,转向使用更稳定和推荐的方法,如使用特性检测库和渐进增强策略。 总之,"IE6/IE7/IE8/Firefox/...

    css hack div 布局

    值得注意的是,随着浏览器更新和CSS规范的统一,许多旧的CSS hack已经不再必要,开发者应尽量使用最新的CSS特性并遵循标准,以减少对hack的依赖。同时,持续关注浏览器的更新和新功能,可以帮助我们更好地应对未来的...

    CSS Hack Table

    CSS Hack可以是属性前缀,特殊字符,或者是使用条件注释等方法。 在提供的压缩包文件中,我们可以找到以下几个文件: 1. **base.css**:这通常是一个基础样式表,包含了网站的通用样式规则,可能包括了部分跨浏览器...

    巧用 UserAgent 代替拙劣的 CSS hack

    标题“巧用 UserAgent 代替拙劣的 CSS hack”指出了一种避免使用CSS hack,转而利用UserAgent来实现特定浏览器兼容性的方法。CSS hack常常导致代码可维护性下降,而通过UserAgent判断,我们可以更加优雅地处理浏览器...

    谷歌和safari webkit独有css hack

    在Web开发中,CSS Hack是一种解决浏览器间样式差异的方法。由于不同的浏览器对CSS的实现不完全相同,可能导致同样的CSS代码在不同浏览器中表现不一致。开发者会使用特定的CSS语法或选择器来针对特定浏览器进行优化,...

    css hack日志

    css hack 兼容性的总结与体会. IE6,IE7,IE8,IE9,firefox,apple,chrome等等浏览器的兼容性

    各浏览器的cssHack总结

    CSS Hack是为了让特定样式在特定浏览器中生效而采用的一些技巧或方法。本文将对各浏览器的CSS Hack进行总结,主要关注如何解决CSS样式兼容问题。 首先,我们了解下主要的浏览器:IE(Internet Explorer)、Firefox...

Global site tag (gtag.js) - Google Analytics