css hacker
firefox认为是CSS语法错误,所以忽略。但是不同IE版本识别不同,不忽略,
所以能实现hack,并且*+HTML还能通过W3C验证
IE6 IE7 FF
* √ √ ×
!important × √ √
background:orange; *background:red !important; *background:blue;
background:orange; *background:blue;
IE678 表现一样都为blue ,貌似important不起作用 FF均为orange
background:orange;*background:green;_background:blue
IE全都是blue
IE FF
background:orange 678均识别 yes
_background:red; 678均识别 no
*background:blue 678均识别 no
区别IE6与FF:
background:orange;*background:blue;
心得:ie678均为blue,FF为orange
区别IE6与IE7:
background:green !important; background:blue;
心得:IE 均为后者定义的,看来都不识别important,而FF则是按important来的
区别IE7与FF:
background:orange; *background:green;
心得:同上
区别FF,IE7,IE6:
background:orange;*background:green !important;*background:blue;
总结 ie都不识别important ,IE678如何区分????
FF 不识别 *background _background 之类的
不过总算区分出IE 与FF了!!!也就是说在变现不同的地方重定义以下就OK了
1、IE6 margin加倍 浮动闭合 IE与FF在容器width与height计算上的差异
2、ff下容器高度限定,即容器定义了height之后,容器边框的外形就确定了,不会被内容撑大,
而ie下是会被内容撑大,高度限定失效。所以不要轻易给容器定义height
3、 文字本身的大小不兼容。同样是font-size:14px的宋体文字,在不同浏览器下占的空间
是不一样的,ie下实际占高16px,下留白3px,ff 下实际占高17px,上留白1px,
下留白3px,opera下就更不一样了。解决方案:给文字设定 line-height 。确保所
有文字都有默认的 line-height 值
4、横向上的撑破容器问题,。如果float 容器未定义宽度,ff下内容会尽可能撑开容器宽度,
ie下则会优先考虑内容折行。故,内容可能撑破的浮动容器需要定义width
4.最被痛恨的,double-margin bug。ie6下给浮动容器定义margin-left 或者margin-right
实际效果是数值的2倍。解决方案,给浮动容器定义display:inline
5.mirror margin bug,当外层元素内有float元素时,外层元素如定义margin-top:14px,
将自动生成margin-bottom:14px。 padding也会出现类似问题,都是ie6下的特产,
该类bug 出现的情况较为复杂,远不只这一种出现条件,还没系统整理。解决方案:
外层元素设定border 或 设定float
6. 吞吃现象。还是ie6,上下两个div,上面的div设置背景,却发现下面没有设置背景
的div 也有了背景,这就是吞吃现象。对应上面的背景吞吃现象,还有滚动下边框
缺失的现象。解决方案:使用zoom:1。这个zoom好象是专门为解决ie6 bug而生的
9. 失去line-height。<div style=”line-height:20px”><img />文字</div>,很遗憾,
在ie6下单行文字 line-height 效果消失了。。。,原因是<img />这个inline-block
元素和inline元素写在一起了。解决方案:让img 和文字都 float起来
12.ie6下严重的bug,float元素如没定义宽度,内部如有div定义了height或zoom:1,
这个div就会占满一整行,即使你给了宽度。float元素如果作为布局用或复杂的容器,
都要给个宽度的
13.ie6下的bug,绝对定位的div下包含相对定位的div,如果给内层相对定位的div高度
height具体值,内层相对层将具有100%的width值,外层绝对层将被撑大。解决
方案给内层相对层float属