本文测试工具:IE11自带各种版本IE调试,但是没有IE6,IE6使用IEtester,文中测试如有瑕疵,望指出。
五大浏览器内核代表:
Trident:IE Maxthon(遨游)、Theworld世界之窗、360浏览器
Gecko:Monzilla Fixfox开源。
Webkit:Safair Chrome 开源
Presto:Opera 世界公认渲染速度最快的引擎
Blink:Google和Opera Software开发的浏览器排版引擎 2013.4发布
CSS Bug:CSS样式在各浏览器中解析不一致的情况,或者说css样式在浏览器中不能正确显示的问题称为CSS bug.
CSS Hack:CSS中,Hack是指一种兼容CSS在不同浏览器中正确显示的技巧方法,因为它们都属于个人对css代码的非官方修改,
或非官方补丁。有些人更喜欢使用patch(补丁)来描述这种行为。
Filter:表示过滤器的意思。它是一种对特定的浏览器或浏览器组显示或隐藏规则或声明的方法。本质上讲,Filter是一种用来过滤不同浏览器的Hack类型。
IE6常见CSS解析Bug及hack
1.图片间隙
div中的图片间隙(<=IE9)
描述:在div中插入图片时,图片会将div下方撑大三像素
hack1:将
撑大三像素图片:
兼容后的代码以及图片:
2.双倍浮向(IE6双倍边距)
描述:当IE6版本浏览器在解析浮动元素时,会错误地把浮向边界加倍显示
hack:给浮动元素添加声明:_display:inline;
解析:加下划线,只针对IE6及以下起作用。
双倍边距:
兼容后的代码以及图片:
3.默认高度(<=IE6)
描述:在IE6及以下版本中,部分块元素拥有默认高度(低于18px高度)
hack1:给元素添加声明:font-size:0;
hack2:给元素添加声明:overflow:hidden;
解析:使用font-size可能对块内文字可能有一定影响.
默认高度:
兼容后的代码以及图片:
4.表单元素行高不一致(IE MOZ C O S)
描述:表单元素行高对齐方式不一致
hack:给表单元素添加声明:float:left;
行高不一致:
兼容后代码以及图片:
5.按钮元素默认大小不一
描述:各浏览器中按钮元素大小不一致
hack1:统一大小/(用a标记模拟)
hack2:在input上写按钮的样式,一定要把input的边框去掉
hack3:如果这个按钮是一个图片,直接把图片作为按钮的背景图即可。
兼容后的代码以及图片:
提交
6.百分比bug
描述:在IE6及以下版本中在解析百分比时,会按四舍五入方式计算从而导致50%加50%大于100%的情况。
hack:给右面的浮动元素添加声明:clear:right;
解析:测试中IE5,IE6没问题,IE7出现大于100%情况,用上面的方法可以解决。
大于100%:
7.鼠标指针bug
描述:cursor属性的hand属性值只有IE浏览器识别,其它浏览器不识别该声明,
cursor属性的pointer属性值IE6.0以上版本及其它内核浏览器都识别该声明
hack:如统一某元素鼠标指针形状为手型,应添加声明:cursor:pointer;
测试:cursor属性的pointer值IE5及以上的都支持,hand属性值IE9不支持,火狐也不支持。
鼠标指针代码以及图片:
你好,世界
你好,世界
8.透明属性
IE浏览器写法:filter:alpha(opacity=value);取值范围1-100
兼容其它浏览器写法:opacity:value;(value的取值范围0-1,0.1 0.2...0.9)
透明属性:
兼容后代码以及图片:
你好,世界
过滤器(filter)
1.下划线属性过滤器
当在一个属性前面增加了一个下划线后,由于符合标准的浏览器能识别带有下划线的属性而忽略了这个声明
但是IE6及更低版本浏览器中会继续解析这个规则
语法:选择符{属性:属性值;}
2.!important关键词过滤器
它表示所附加的声明具有最高优先级的意思。但由于Ie6及更低版本不能识别它,我们可以利用IE6这个BUG作为过滤器来兼容IE6和其它标准的浏览器
语法:选择符{属性:属性值!important;}
3.*属性过滤器
当在一个属性前面增加了*后,该属性只能被IE7浏览器识别,其它浏览器忽略该属性的作用。
语法:选择符{*属性:属性值;}