所谓的浏览器兼容性问题,是指由于不一样的浏览器对同一段代码有不一样的解析,形成页面显示效果不统一的状况。在大多数状况下,咱们的需求是,css
不管用户用什么浏览器来查看咱们的网站或者登录咱们的系统,都应该是统一的显示效果。因此浏览器的兼容性问题是前端开发人员常常会碰到和必须html
要解决的问题。前端
firefox 不支持hand,但ie支持 pointer
解决方法:统一使用pointer
解决方法:ajax
需用textContent浏览器
if(navigator.appName.indexOf("Explorer")>-1){ document.getElementById('element').innerText = "my text"; }else{ document.getElementById('element').textContent = "my text"; }
IE:filter:alpha(opacity=60)。
FF:opacity:0.6。
标准 w3c 盒子模型的范围包括 margin、border、padding、content,而且 content 部分不包含其余部分; IE盒子模型的范围也包括app
margin、border、padding、content。和标准 w3c 盒子模型不一样的是:ie 盒子模型的 content 部分包含了 border 和 padding。dom
所以,问题主要表如今css中的width是否计算border和padding的问题,这个是默认的盒子解析模型不一样致使的。布局
IE6:中包括border和padding(box-sizing: border-box;)网站
IE7和非IE:width宽度不包括border和padding(box-sizing: content-box;)spa
解决方式: 根据使用方式,写好box-sizing属性。
问题症状:常见症状是IE6中后面的一块被顶到下一行
解决方案:在float的标签样式控制中加入 display:inline;将其转化为行内属性
备注:咱们最经常使用的就是div+CSS布局了,而div就是一个典型的块属性标签,横向布局的时候咱们一般都是用div float实现的,横向的间距
设置若是用margin实现,这就是一个必然会碰到的兼容性问题。
问题症状:几个img标签放在一块儿的时候,有些浏览器会有默认的间距。
解决方案:使用float属性为img布局
备注:由于img标签是行内属性标签,因此只要不超出容器宽度,img标签都会排在一行里,可是部分浏览器的img标签之间会有个间距。去掉这
个间距使用float是正道。
.clearfix:after { content:"."; display:block; height:0; clear:both; visibility:hidden;
}
当div应用复杂的时候每一个栏中又有一些连接,DIV等这个时候容易发生捉迷藏的问题。 有些内容显示不出来,当鼠标选择这个区域是发现
内容确实在页面。
解决办法:对#layout使用line-height属性或者给#layout使用固定高和宽。页面结构尽可能简单。
select { -o-text-overflow:ellipsis; text-overflow:ellipsis; white-space:nowrap; overflow:hidden; width:200px; }
这个是在越出长度后会自行的截掉多出部分的文字,并以省略号结尾,很好的一个技术。只是目前Firefox并不支持。
解决这个BUG的技巧有不少,能够是改变html的排版,或者设置img为display:block。
解决技巧
a:link {} a:visited {} a:hover {} a:active {}
说明:Firefox下,可使用const关键字或var关键字来定义常量;
IE下,只能使用var关键字来定义常量.
解决方法:统一使用var关键字来定义常量.
说明:IE下,event对象有srcElement属性,可是没有target属性;Firefox下,even对象有target属性,可是没有srcElement属性。
解决方法:使用srcObj =event.srcElement ?event.srcElement : event.target;
IE:dom.attachEvent();
其余浏览器:dom.addEventListener();
标准浏览器采用事件捕获的方式对应IE的事件冒泡机制(即标准由最外元素至最内元素或者IE由最内元素到最外元素)最后标准方亦以为IE这
方面的比较合理,因此便将事件冒泡归入了标准,这也是addEventListener第三个参数的由来,并且事件冒泡做为了默认值。
IE:ActiveXObject
其余:xmlHttpReuest