浏览器兼容

本文测试工具: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:将</div>与<img>写在一行上   (测试:IE8 IE9无效 IE5 IE7可以)
hack2:将<img>转为块状元素,给<img>添加声明:display:block;(测试:IE5-IE11都可以)

撑大三像素图片:

兼容后的代码以及图片:

<style type="text/css">
.box{background-color:#000}
.box img{display:block;}
</style>
<div class="box">
<img src="1.png" />
</div>


2.双倍浮向(IE6双倍边距)
描述:当IE6版本浏览器在解析浮动元素时,会错误地把浮向边界加倍显示
hack:给浮动元素添加声明:_display:inline;
解析:加下划线,只针对IE6及以下起作用。

双倍边距:

兼容后的代码以及图片:

<style type="text/css">
  .box{width:100px;height:200px;background-color:#fff000;}
  .box1{width:100px;height:200px;background-color:red;margin-left:100px;float:left;margin-top:20px;_display:inline}
</style>
<div class="box"></div>
<div class="box1"></div>


3.默认高度(<=IE6)
描述:在IE6及以下版本中,部分块元素拥有默认高度(低于18px高度)
hack1:给元素添加声明:font-size:0;
hack2:给元素添加声明:overflow:hidden;
解析:使用font-size可能对块内文字可能有一定影响.

默认高度:

兼容后的代码以及图片:

<style type="text/css">
  .box{background-color:#fff000;width:200px;height:5px;overflow: hidden}
</style>
<div class="box"></div>


4.表单元素行高不一致(IE MOZ C O S)
描述:表单元素行高对齐方式不一致
hack:给表单元素添加声明:float:left;

行高不一致:

兼容后代码以及图片:

<input type="text" style="float: left"><input type="submit" value="提交" style="float: left">


5.按钮元素默认大小不一
描述:各浏览器中按钮元素大小不一致
hack1:统一大小/(用a标记模拟)
hack2:在input上写按钮的样式,一定要把input的边框去掉
hack3:如果这个按钮是一个图片,直接把图片作为按钮的背景图即可。

兼容后的代码以及图片:

<style type="text/css">
    .sub{display: block;width: 80px;height: 30px;border:1px #000 solid;background: #00f;color:#fff;text-decoration: none;text-align: center;line-height: 30px;font-size: 14px}
</style>
<a href="" class="sub">提交</a>
<input type="submit" value="提交" class="sub"/>


6.百分比bug
描述:在IE6及以下版本中在解析百分比时,会按四舍五入方式计算从而导致50%加50%大于100%的情况。
hack:给右面的浮动元素添加声明:clear:right;
解析:测试中IE5,IE6没问题,IE7出现大于100%情况,用上面的方法可以解决。

大于100%:


兼容后代码以及图片:

<style type="text/css">
    .box{width: 50%;height: 100px;background: #f00;float: left}
    .box1{width: 50%;height: 100px;background: #0f0;float: left;clear:right}
</style>
<div class="box"></div>
<div class="box1"></div>

7.鼠标指针bug
描述:cursor属性的hand属性值只有IE浏览器识别,其它浏览器不识别该声明,
cursor属性的pointer属性值IE6.0以上版本及其它内核浏览器都识别该声明
hack:如统一某元素鼠标指针形状为手型,应添加声明:cursor:pointer;
测试:cursor属性的pointer值IE5及以上的都支持,hand属性值IE9不支持,火狐也不支持。

鼠标指针代码以及图片:

<h1 style="cursor:hand">你好,世界</h1>
<h1 style="cursor:pointer">你好,世界</h1>


8.透明属性
IE浏览器写法:filter:alpha(opacity=value);取值范围1-100
兼容其它浏览器写法:opacity:value;(value的取值范围0-1,0.1 0.2...0.9)

透明属性:

兼容后代码以及图片:

<style type="text/css">
.box{width: 100px;height: 100px;background: #1abc9c;opacity: .5;position: absolute;top:10px;}
</style>
<h1>你好,世界</h1>
<div class="box"></div>

过滤器(filter)
1.下划线属性过滤器
当在一个属性前面增加了一个下划线后,由于符合标准的浏览器能识别带有下划线的属性而忽略了这个声明
但是IE6及更低版本浏览器中会继续解析这个规则
语法:选择符{属性:属性值;}
2.!important关键词过滤器
它表示所附加的声明具有最高优先级的意思。但由于Ie6及更低版本不能识别它,我们可以利用IE6这个BUG作为过滤器来兼容IE6和其它标准的浏览器
语法:选择符{属性:属性值!important;}
3.*属性过滤器
当在一个属性前面增加了*后,该属性只能被IE7浏览器识别,其它浏览器忽略该属性的作用。
语法:选择符{*属性:属性值;}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值