关于浏览器兼容的一些概念和原因

1.为什么会出现浏览器兼容问题
由于各大主流浏览器由不同的厂家开发,所用的核心架构和代码也很难重和,这就为各种莫名其妙的Bug(代码错误)提供了温床。再加上各大厂商出于自身利益考虑而设置的种种技术壁垒,都让CSS应用起来比想象得要麻烦。浏览器的兼容问题是我们必须去克服的。

2.CSS Bug、CSS Hack和Filter
1) CSS Bug: CSS样式在各浏览器中解析不一致的情况,或者说CSS样式在浏览器中不能正确显示的问题称为CSS bug.

2) CSS Hack: CSS中,Hack是指一种兼容CSS在不同浏览器中正确 显示的技巧方法,因为它们都属于个人对CSS代码的非官方的修改,或非官方的补丁。有些人更喜欢使用patch(补丁)来描述这种行为。

3) Filter:表示过滤器的意思,它是一种对特定的浏览器或浏览器组显示或隐藏规则或声明的方法。 本质上讲, Flter是种用来过滤不同浏览器的Hack类型。

3.常见的CSSbug和CSShack
1)图片间隙
A) div中的图片间隙(该bug出现在所有浏览器中)
描述:在div中插入图片时,图片会将div下方撑大几像素。
hack:将转为块状元素,给添加声明: display:block;
B)当图片横着排的时候,图片跟图片之间存在一定的间距
hack : img:{float:left}
2)dt,li 中图片间隙
hack:将转为块状元素,给添加声明:display:block;

3)双倍浮向(双倍边距)(只有IE6出现)
描述:在IE6中, 一个居左(或居右)浮动的元素放置进一 个容器盒(box) ,并在浮动元素上使用了左边距(或右边距在ie6内便产生双倍边距。
hack给浮动元素添加声明: display:inline;

4)图片在IE浏览器上有蓝色的边框(加在a标签里)
hack:给img的边写成0:img{border:0;}

5)默认高度(IE6、IE7)
描述:在IE6及以下版本中,部分块元素拥有默认高度(低于18px高度)
hack1:给元素添加声明:font-size:0;
hack2:给元素添加声明:overflow:hidden;

6)表单元素距离顶部间距不一致(IE,MOZ,C,O,S)
描述:表单元素距离顶部的距离不一致
hack:给表单元素添加声明:float:left;

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

8)百分比bug
描述:在IE6及以下版本中在解析百分比时,会按四舍五入方式计算从而导致50%加50%大于100%的情况(也会受系统影响)。
hack:给右面的浮动元素添加声明:clear:right;

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

10)子元素没设置任何浮动,设置了margin-top属性后,会错误的把margin-top的属性值添加给父元素.
hack1:给父元素添加overflow:hidden;声明。
注: 如果子元素设置了浮动属性也不会出现这个问题。

11)当给li中的a转成block;并且有height,float的时候,li中没设置浮动会出现阶梯显示。
hack:同时给li加float;

12)input的type类型是text的时候,提示信息用value表示,如果设置了input的高度,在其他浏览器上显示的value的内容是垂直居中的,但是在IE6上是在项部的,解决的方法就是给input添加一个行高等于它的高度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值