写作目的:记录下这个笼统的浏览器兼容性问题。让自己更清晰一些。
浏览器兼容性问题出现的原因就是浏览器内核不同所造成的,那么回顾一下常用浏览器的内核:
切入正题
1.我一般先写一个reset.css
div,h1,h2,h3,h4,h5,h6,p,ul,li,ol,dl,dd,dt{
margin:0;
padding:0;
} //每个浏览器对内外补丁大小解析不同
ul,ol,li{
list-style:none;
}
a{
text-decoration:none;
}
2.img标签一行多个排列时,右侧和下方有默认空隙。
解决方法:给img标签添加属性:
float:left;
PS:
容器中的图片会把容器撑大三像素,给容器添加属性:
overflow:hidden;
溢出隐藏,解决所有浏览器此问题。
3.透明度问题
IE中的写法:
filter:alpha(opacity=60);
普通浏览器
opacity:0.6;
4.不同的浏览器对input框解析不同,为了统一我们可以这么做:
直接上demo:
html部分:
"cont">
"wrap">
"ensure" type="button" value="确定" />
css部分:
.cont{
width:300px;
height:300px;
}
.wrap{
width:50px;
height:20px;
border:1px solid #orange;
}
.ensure{
width:100%;
height:100%;//浏览器会有默认高度,可以自己定义。
border:0;//外边框解析不一致,去掉自己写。
background:#fff;//表单按钮属性会有默认背景颜色,自己更改即可
}
(正常来讲,如果没有明确设置height的值,那么设置的line-height值就是height的值。在IE8中的input要设定高度。input,img,iframe等元素不支持伪元素 ,因为他们不是容器。)
PS:表单元素对齐方法:添加float属性。
5.解决高度塌陷以及清除浮动。简单的demo:
html部分:
"cont">
"one">
"one">
"two">
css部分:
.cont{
width:100%;
height:100%;
overflow:hidden;//此时的容器没有定义高度,容器中有浮动的子元素撑不起来,会导致高度塌陷。添加此属性解决高度塌陷
}
.one{
width:100px;
height:100px;
float:left;
}
.two{
clear:both; //由于上面两个div浮动,脱离文档流,在这里清除浮动,div才能呆在应该呆的地方
width:100px;
height:100px;
}
不过通常为了省事,大家也都会用万能清除法来解决这个问题(建议写在公共类里面,当然也是为了省事)
.clearfix:after{
display:block;
clear:both;
content:"";
visibility:hidden;
height:0;
}
.clearfix{
zoom:1;
} //zoom(IE专有属性)可解决ie6,ie7浮动问题,IE8以及以上浏览器才能识别伪类元素。
6.360双核浏览器,据说添加以下头部meta信息可以使得网页用webkit内核渲染:
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
一些兼容性写法,为了IE和普通浏览器通用
css:
cursor:pointer; //鼠标手势
border:0; //去除外边框
js:
统一使用 [] 获取集合类对象。
统一通过 getAttribute() 获取自定义属性。
IE || 其他
window.event || event
e.cancleBubble || e.stopPropagation //阻止事件冒泡
慢慢积累~~~