先温习一下对于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方法打包上传共享下~ 下面是最常用的三种hack方式 第一种: .div { background:orange;/*ff*/ *background:green !... } /* IE7 */
- **Selector/**/{property/**/:value;}**:在大括号前加上“/**/”,以及在属性值后加上“/**/”,适用于IE5和IE6(IE5.5)。 - **Selector/**/{property:value;}**:在大括号前加上“/**/”,适用于IE5。 - **\*+...
- **示例代码**:`.test{color/*\**/:blue\9}` - **作用解析**:通过在CSS属性值前添加`/*\**/`和`\9`,可以实现仅对IE8及以下版本生效的样式设置。这里的`\9`是IE特有的解析漏洞,使得后跟的样式仅对这些版本的IE...
/* IE7+ 和 Firefox */ width: 80px; /* IE6 */ } ``` ##### **2. *+html 与 *html*** - **概述**:这两种选择器是IE特有的,Firefox等其他浏览器不支持。其中,`*+html`是IE7特有的标签。 - **示例**: ```...
通过上述详细的分类和解释,我们可以看出连词及相关的表达方式在写作中的重要作用。它们不仅能够帮助我们组织文章的结构,还能增强论述的逻辑性和说服力。掌握并灵活运用这些连词和句型,对于提高英语写作水平具有...
### 编写纯CSS弹出菜单的原理及实现 #### 摘要 本文由shawl.qiu撰写,主要介绍了如何使用CSS技术来创建适用于多种浏览器(如Opera、Firefox、IE)的弹出式菜单。文章重点讲解了利用CSS属性(如`display`和`:hover`...
通过对这些词汇的学习,能够帮助考生提高词汇量,增强阅读理解能力、听力水平以及写作和口语表达能力。 #### 词汇详解 1. **alter** /ˈæltər/ *v.* 改变, 改动, 变更 - **释义**: 指对事物进行修改或调整。 ...
} /* 针对IE6 */ *+html #demo { width: 130px; } /* 针对IE7 */ ``` 最终效果: - Firefox:100px - IE6:120px - IE7:130px ##### **1.4 !important Hack** - **IE7+FF识别**:`width: 100px!important;` - ...
important`属性来确保Firefox和IE7及以上版本显示为100px,而IE6则显示为80px。 - **特定版本Hack**: ```css #wrapper { width:120px; /* FireFox */ *html #wrapper { width:80px; } /* ie6 fixed */ *+...
} /*FF,OP可见,特别提醒:由于Opera最近的升级,目前此句只为FF所识别*/select:empty {font:12px !important;} /*safari可见*/这里select是选择符,根据情况更换。第二句是MAC上safari浏览器独有的。仅IE7与IE5.0...
important被忽略时) */ ``` 3. 区分IE7与Firefox: IE7可以识别星号(*),但Firefox不能。因此,我们可以利用这个特性进行区分: ```css background: orange; /* Firefox */ *background: green; /* IE7 */ ``...
5. **Webpack**:模块打包原理,loader和plugin的配置,以及优化技巧(代码分割、懒加载)。 除了上述知识点,面试中还可能涉及性能优化、浏览器兼容性、源码分析、工程化实践等方面的问题。学习并掌握这些内容,...
总之,处理Web浏览器兼容性问题需要对不同浏览器的解析差异有深入理解,并采取适当的技巧和策略。通过合理的CSS编写和调试,可以创建在多种浏览器下表现一致的网页。同时,随着技术发展,新的浏览器和标准不断出现,...
/***适合IE7.0***/ *margin:0px -5px -4px 0px; /****适合IE6.0***/ margin:0px 0px 0px 0px; /*****适合FF*****/ 区别IE6与FF: 复制代码代码如下: background:orange;*background:blue; 区别IE6与IE7: ...
/* 其他浏览器 */ *background: blue; /* IE6 和 Firefox */ ``` 这里,`*` 是一种特殊的前缀,用来让IE6及Firefox识别特定的CSS规则。 2. **IE6 和 IE7 的兼容处理:** - 对于IE6和IE7,可以通过以下方式进行...
/* IE7+Firefox */ width: 80px; /* IE6 */ } </style> ``` **注意事项**: - IE7及更高版本支持 `!important`,因此该方法仅适用于IE6。 - 需要注意声明的顺序和位置。 ##### 2. `*html` 和 `*+html` Hack 这...
/* IE7+FF */ width: 200px; /* IE6 */ } ``` 然而,对于IE6,我们需要单独处理,因为`!important`在这里不起作用。这就引出了CSS Hack的方法。CSS Hack是通过特定的语法结构来针对不同浏览器应用样式。例如: -...