浏览器兼容

Posted imbacool

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浏览器兼容相关的知识,希望对你有一定的参考价值。

浏览器五大内核

1、Trident(IE内核)
IE、遨游、腾讯、世界之窗、360
代表作品:IE(此内核只适用于windows)

2、Gecko(火狐内核)
代表作品:firefox(开源且跨平台)

3、Webkit
代表作品:chrome(谷歌-前期)、safari(苹果)开源

4、Presto
代表作品:opera(欧朋-前期)
渲染速度最快引擎(已废弃)

5、Blink
代表作品:谷歌(后期)、欧朋(后期)

CSS bug
CSS样式在各浏览器中解析不一致的情况,或者说CSS样式在浏览器中不能正确显示的问题称为CSS bug(漏洞).

解决方法
1、CSS hack
CSS中,Hack是指一种兼容CSS在不同浏览器中正确显示的技巧方法(降低了CSS代码的可读性,增加了代码的负担。

2、Filter
表示过滤器的意思,本质上讲,Filter是一种用来过滤不同浏览器的Hack类型。

设计CSS Hack和 Filter通常有两种方法:

1)一种是利用浏览器自身的Bug,来隐藏或显示样式或声明;

2)另一种是利用浏览器对CSS支持的不完善,如对某些规则或语法还没有形成支持,来隐藏或显示样式。

常见BUG及hack

1)图片有边框BUG(ie8及以下)
描述:当图片加<a href=“#”></a>在IE上会出现边框
Hack: 给图片加 border: 0 none;

2)图片间隙(IE6)
div中的图片间隙BUG
描述:在div中插入图片时,图片会将div下方撑大大约三像素
hack1:将div的字体大小设成0;
hack2:将<img>转为块状元素,给<img>添加声明:display:block;

3) 双倍浮向(双倍边距)(只有IE6出现)
描述:当Ie6及更低版本浏览器在解析浮动元素时,会错误地把浮向边边界(margin)加倍显示。
hack:给浮动元素添加声明 display:inline;

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

5)表单元素行高对齐不一致(各浏览器都有)
描述:表单元素行高对齐方式不一致
hack1:给表单元素添加声明:float:left;
hack2:给表单元素添加声明:vertical-align:middle;

6)按钮元素默认大小不一(各浏览器都有)
描述:各浏览器中按钮元素大小不一致
hack1:input外边套一个标签,在这个标签里写input的样式,把input的边框去掉,默认padding也要去掉,display:block。
hack2:用a标签模拟

7)百分比bug(IE6)
描述:在IE6及以下版本中在解析百分比时,会按四舍五入方式计算从而导致50%加50%大于100%的情况。(也会受系统影响)

hack: 给右边的浮动元素添加声明:
clear:right; 清除右浮动

8)鼠标指针bug(手型就写pointer)
描述: cursor属性的hand属性值只有IE9以下浏览器识别,其它浏览器不识别该声明
cursor属性的pointer属性值IE6.0以上版本及其它内核浏览器都识别该声明

hack: 如统一某元素鼠标指针形状为手型,应添加声明:cursor:pointer;

鼠标指针语法
cursor:auto 默认
crosshair 加号
text 文本
wait 等待
help 帮助
progress 过程
inherit 继承
move 移动
ne-resize 向上或向右移动
pointer 手形

9)透明属性
兼容其他浏览器写法 opacity:value; (value的取值范围0-1)
例:opacity:0.5;

IE浏览器写法 filter:alpha(opacity=value); 取值范围 0-100(整数)
例:filter:alpha(opacity=50);

10)margin塌陷

当前元素(父元素里面第一个子元素)与父元素没有设置任何浮动的情况下,设置margin-top后,会错误的把margin-top加在父级元素上

hack1、给父级元素添加overflow:hidden;(推荐使用)
hack2、给父元素或者子元素加浮动

11)margin合并BUG
当两个上下排列的元素,上元素有margin-bottom:30px;下面元素有margin-top:20px;他们中间的距离不会叠加,而是会设置为较大的值
hack 给上边盒子外层加一个空盒子,加overflow:hidden;

以上是关于浏览器兼容的主要内容,如果未能解决你的问题,请参考以下文章

360浏览器怎么切换成兼容模式?

如何设计产品的兼容性测试

IE浏览器为啥会出现兼容模式?

360浏览器怎样切换到兼容模式?

360安全浏览器如何切换模式为兼容模式?

360安全浏览器兼容模式怎么设置?