1.1 选择器
- 通配符 * :: IE6不支持
- 类选择器 .class :: IE6元素的class不能超过2个
- 属性选择器 [att=value] [att] [att|=value] [att(^|$|~)=value] :: IE6不支持
- 关系选择器 E + F; E > F ; E ~ F :: IE6不支持
1.2 伪类
- :first-letter,:first-line,:visited,:link :: 都支持
- :hover :: IE6只支持A元素,IE7及FF支持A以外元素
- :before和:after :: IE7和firefox支持,好好利用可以实现很多不错的效果
1.3 !IMPORTANT
- 突破样式表属性>ID>双CLASS>单CLASS>元素,后者>前者的层叠顺序,不过IE6不支持
1.4 DocType
文档类型决定了IE的渲染模式,标准模式(standard)还是兼容模式(quirks),并且声明必须放在所有代码之前,包括注释。">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
查看详情Quirks模式与Standards模式
- 盒模型 标准模式,实际宽度=width+border-width+padding-width+margin-width 兼容模式下,实际宽度=width
- 水平居中 IE中,标准模式下可使用margin:0 auto水平居中。兼容模式下无效。
- 行内元素尺寸 标准模式下不能设置span等行内元素的width和height,兼容模式下可以。
- 不正确的语法 譬如未书写尺寸单位,大小写不正确,嵌套不正确等,兼容模式下尺寸采用默认单位px,其它的都尽量修正。标准模式下这条css规则无效。
- 相对高度 元素设定百分比高度时,需要父元素高度已指定,所以最好先指定html和body元素高度为100%
- IE7的新CSS特性 min/max-width/height,position:fixed,:hover,overflow:visible 等在兼容模式下会失效。
- 默认样式 FF下,在进入quirks模式后,会加载其目录下的res/quirk.css,设置一些其它的默认样式
1.5 属性
- Z-INDEX SELECT元素浮动在其它元素的上方,不能改变z-index,必要的时候采用js来控制select的显隐达到需要的效果 FLASH默认的wmode为window模式,浮动在其它html元素的上方,指定z-index不会改变这种情况。需要将wmode指定为transparent或者opaque
- CURSOR FF 不支持cursor:hand,使用cursor:pointor
- 列表取消缩进 IE margin:0;FF padding:0
- 自动折行
- DIV
1 .wrap1 {
2 word-break:break-all;
3 word-warp:warp;
4 over-flow:auto!important;
5 }
6 .wrap2 {
7 white-spacing:normal;
8 word-warp:warp;
9 over-flow:auto!important;
10 }
- TABLE
1 table{
2 table-layout:fixed;
3 }
- 固定宽度不折行
1 <td width="25%" nowrap><div>contentdiv>td>
- 空DIV仍占空间
1 .empty{
2 line-height:0%;
3 height:0px;
4 font-size:0pt;
5 }
1.6 滤镜(filter)
IE私有,效率也比较低,一般不建议使用。
IE:
1 #id{ filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)}
FF:
1.7 行为(behavier)
在css中使用js, IE特有,借此可实现max-width,min-width等效果,不过效率比较低.同时这里也是可能存在XSS攻击的地方.
1.8 Bug
- 高度不适应 :: 内层设完margin或者padding后比外层高度还高。解决方案:在内层上下各加一个空div.
- 容器不扩展 :: 内存浮动后,外层缩成直线。解决方案:内存结束时清除浮动。
- margin加倍 :: 在IE 5.x、IE6中,为float的盒子指定margin时,左侧margin可能会变成两倍的宽度。通过改用padding或指定盒子为display:inline可以解决
- IE6 3px :: IE6中左浮动div右侧的文本和块与左div的距离会增加3px,解决方法给左侧的div增加margin-right:-3px;或者避免使文本直接与左div接触,同时右侧的块使用display:inline-block
- IE6捉迷藏 :: 一个浮动元素后而跟着一些非浮动元素,然后是一个清理元素,所有这些元素都包含在一个设置了背景颜色或图像的容器元素中。假如清理元素砬到了浮动元素,那么中间的非浮支元素看起来消失了,隐到了父元素的背景颜色或图像后面,只有在刷新页面时才重新出现。解决方案:去掉背景或者容器指定宽高,或者指定行高,或者将浮动元素和容器元素的position属性设置为relative也会减轻这个问题。
- IE6断头台 :: 当容器中左浮动对象右侧直接跟链接,并且链接的hover状态属性有变化的话,可能导致容器的高度重新计算,并切掉左浮动对象的部分内容。解决方案:浮动对象后面不直接跟非浮动对象,或者最后清除浮动。
1.9 css hack
- @import
1 @import ("notIE.css") screen;
- +_hack
1 #content {
2 width:500px;
3 +width:480px; 4 _width:490px: 5 }
- 条件注释