`
lovelium
  • 浏览: 18910 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

!important和(空格)/**/:的组合技巧及其他

阅读更多
先温习一下对于IE的box-model的破解
IE box-model这个臭名昭著的bug存在于IE6/Win以前的每一只版本,这个虫子直到tantak发布了流传最为广泛的那个hack才开始被驯服

http://www.tantek.com/CSS/Examples/boxmodelhack.html
IE5.X/win对box-model的解析是一样的,他们认为width包括了边框(border)和补白(padding),幸运的是这个情况在IE6中有了好转
但是IE6在向后兼容的同时也包容了以前的错误,IE6其实有两个核心,在旧的页面前他仍旧表现出对错误的宽容,只有在文档中严格地加上文档类型(DOCTYPE)声明,IE6才能够接受正确的box-model
所以,tantak的hack必须和正确的DOCTYPE同时包含在文档中才能够正常工作

div.content {
       width:400px;                            //这个是错误的width,所有浏览器都读到了
       voice-family: "\"}\"";                     //IE5.X/win忽略了"\"}\""后的内容
       voice-family:inherit;
       width:300px;                     //包括IE6/win在内的部分浏览器读到这句,新的数值(300px)覆盖掉了旧的
}
html>body .content {              //html>body是CSS2的写法
       width:300px;                            //支持CSS2该写法的浏览器有幸读到了这一句
}
-------------------------------------------------------------------------------------------------------------------------------------
现在回到主题,我们经常看到!important和(空格)/**/:组合在一起使用,这个写法有什么奥妙呢?

看刚才那个写法,我这里可以提供另一种写法也能达到这样的效果

div.content {
       width:300px !important;              //这个是正确的width,大部分支持!important标记的浏览器使用这里的数值
       width(空格)/**/:400px;              //IE6/win不解析这句,所以IE6/win仍然认为width的值是300px;而IE5.X/win读到这句,新的数值(400px)覆盖掉了旧的,因为!important标记对他们不起作用
}
html>body .content {              //html>body是CSS2的写法
       width:300px;                            //支持CSS2该写法的浏览器有幸读到了这一句
}

同样,这个方法仍必须依靠正确的文档类型声明才能够正常工作,原因在前面已经说过。

文档类型声明就像一个开关,打开向后兼容的未来,而错误使用的话,就是一个Pandora box 
分享到:
评论

相关推荐

    雅思听力替换词汇

    **Danger**/**Endanger**/**Dangerous**/**Hazard**/**Hazardous**/**Threat**/**Threaten**/**Threatening**/**Jeopardy**/**Jeopardize**/**Jeopardous**/**Risk**/**Risky**:危险,威胁,危害,风险,全面涵盖了...

    css hack 文档集合

    写了有不少网页了,css的兼容性代码也写了不少,将收集的一些常用的hack方法打包上传共享下~ 下面是最常用的三种hack方式 第一种: .div { background:orange;/*ff*/ *background:green !... } /* IE7 */

    有关浏览器的问题IE版本问题

    - **Selector/**/{property/**/:value;}**:在大括号前加上“/**/”,以及在属性值后加上“/**/”,适用于IE5和IE6(IE5.5)。 - **Selector/**/{property:value;}**:在大括号前加上“/**/”,适用于IE5。 - **\*+...

    IE各版本hack汇总

    - **示例代码**:`.test{color/*\**/:blue\9}` - **作用解析**:通过在CSS属性值前添加`/*\**/`和`\9`,可以实现仅对IE8及以下版本生效的样式设置。这里的`\9`是IE特有的解析漏洞,使得后跟的样式仅对这些版本的IE...

    css兼容性详解

    /* IE7+ 和 Firefox */ width: 80px; /* IE6 */ } ``` ##### **2. *+html 与 *html*** - **概述**:这两种选择器是IE特有的,Firefox等其他浏览器不支持。其中,`*+html`是IE7特有的标签。 - **示例**: ```...

    连词经典汇总.docx

    通过上述详细的分类和解释,我们可以看出连词及相关的表达方式在写作中的重要作用。它们不仅能够帮助我们组织文章的结构,还能增强论述的逻辑性和说服力。掌握并灵活运用这些连词和句型,对于提高英语写作水平具有...

    编写纯 CSS 弹出菜单的原理及实现 By shawl.qiu

    ### 编写纯CSS弹出菜单的原理及实现 #### 摘要 本文由shawl.qiu撰写,主要介绍了如何使用CSS技术来创建适用于多种浏览器(如Opera、Firefox、IE)的弹出式菜单。文章重点讲解了利用CSS属性(如`display`和`:hover`...

    英语四级高频词汇(带音标)

    通过对这些词汇的学习,能够帮助考生提高词汇量,增强阅读理解能力、听力水平以及写作和口语表达能力。 #### 词汇详解 1. **alter** /ˈæltər/ *v.* 改变, 改动, 变更 - **释义**: 指对事物进行修改或调整。 ...

    CSS完美兼容通用方法

    } /* 针对IE6 */ *+html #demo { width: 130px; } /* 针对IE7 */ ``` 最终效果: - Firefox:100px - IE6:120px - IE7:130px ##### **1.4 !important Hack** - **IE7+FF识别**:`width: 100px!important;` - ...

    CSS兼容IE6,IE7,FF的技巧

    important`属性来确保Firefox和IE7及以上版本显示为100px,而IE6则显示为80px。 - **特定版本Hack**: ```css #wrapper { width:120px; /* FireFox */ *html #wrapper { width:80px; } /* ie6 fixed */ *+...

    CSS Hack 汇总快查 振之整理

    } /*FF,OP可见,特别提醒:由于Opera最近的升级,目前此句只为FF所识别*/select:empty {font:12px !important;} /*safari可见*/这里select是选择符,根据情况更换。第二句是MAC上safari浏览器独有的。仅IE7与IE5.0...

    CSS hack-CSS

    important被忽略时) */ ``` 3. 区分IE7与Firefox: IE7可以识别星号(*),但Firefox不能。因此,我们可以利用这个特性进行区分: ```css background: orange; /* Firefox */ *background: green; /* IE7 */ ``...

    2021年前端面试题汇总 高清pdf完整版

    5. **Webpack**:模块打包原理,loader和plugin的配置,以及优化技巧(代码分割、懒加载)。 除了上述知识点,面试中还可能涉及性能优化、浏览器兼容性、源码分析、工程化实践等方面的问题。学习并掌握这些内容,...

    web浏览器兼容

    总之,处理Web浏览器兼容性问题需要对不同浏览器的解析差异有深入理解,并采取适当的技巧和策略。通过合理的CSS编写和调试,可以创建在多种浏览器下表现一致的网页。同时,随着技术发展,新的浏览器和标准不断出现,...

    css在各种浏览器中的不同写法整理(IE与FF)

    /***适合IE7.0***/ *margin:0px -5px -4px 0px; /****适合IE6.0***/ margin:0px 0px 0px 0px; /*****适合FF*****/ 区别IE6与FF:  复制代码代码如下: background:orange;*background:blue; 区别IE6与IE7: ...

    CSS兼容IE6,,IE7,I8 FIREFOX

    /* 其他浏览器 */ *background: blue; /* IE6 和 Firefox */ ``` 这里,`*` 是一种特殊的前缀,用来让IE6及Firefox识别特定的CSS规则。 2. **IE6 和 IE7 的兼容处理:** - 对于IE6和IE7,可以通过以下方式进行...

    CSS样式hack,用于兼容多种浏览器

    /* IE7+Firefox */ width: 80px; /* IE6 */ } </style> ``` **注意事项**: - IE7及更高版本支持 `!important`,因此该方法仅适用于IE6。 - 需要注意声明的顺序和位置。 ##### 2. `*html` 和 `*+html` Hack 这...

    DIV+CSS设计时浏览器兼容性问题.pdf

    /* IE7+FF */ width: 200px; /* IE6 */ } ``` 然而,对于IE6,我们需要单独处理,因为`!important`在这里不起作用。这就引出了CSS Hack的方法。CSS Hack是通过特定的语法结构来针对不同浏览器应用样式。例如: -...

Global site tag (gtag.js) - Google Analytics