您的位置:首页 > 其它

常见浏览器兼容性问题与解决方案总结

2017-04-10 12:42 267 查看
无论在写什么项目,只要牵扯到浏览器总会出现大大小小的一系列兼容性问题,下面就总结下时常遇到的浏览器兼容问题,以及其解决的办法。

1.问题之一:

不同浏览器标签默认的外补丁和内补丁是不同,就此问题也会遇到兼容性问题,如下:


问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。

相信碰到此类问题的人很多吧,那我就告诉你解决办法吧:

解决方案: 在CSS里设置 *{margin:0;padding:0;}

备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS文件开头都会用通配符*来设置各个标签的内外补丁是0。

2.问题之二:

块属性标签在float后,同时又有横行的margin,这样的话在IE6显示下margin比会设置的大些。


问题症状: 常见症状是在IE6中,块属性标签float后面的一块被顶到了下一行。

这个问题会碰到的概率差不多有90%,稍稍复杂点的页面都会碰到,也是float布局最常见的浏览器兼容问题。

解决方案:在float的标签样式控制中加入 display:inline;将其转化为行内属性即可。

备注:我们最常用的就是div+CSS布局了,而div就是一个典型的块属性标签,横向布局的时候我们通常都是用div float实现的,横向的间距设置如果用margin实现,这就是一个必然会碰到的兼容性问题了,所以以后在使用的时候,要多多注意才是。

3.问题之三:

设置较小高度标签(一般小于10px),在IE6,IE7中高度会超出自己设置高度 。


问题症状: IE6、7里这个标签的高度不受控制,会超出自己设置的高度

这个问题碰到的概率就相对小一点,但也挺高的,解决方案如下:

解决方案:给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度。

备注:这种情况一般出现在我们设置小圆角背景的标签里。出现这个问题的原因主要是,IE8之前的浏览器都会给标签一个最小默认行高的高度。即使你的标签是空的,这个标签的高度还是会达到默认的行高。

4.问题之四:

行内属性标签,设置display:block后采用float布局,又有横行的margin的情况,IE6间距bug问题。


问题症状: IE6里的间距比超过设置的间距大些。

这个兼容性问题碰到的相对小些,但是碰到了就得有解决的办法,如下:

解决方案 : 在display:block;后面加入display:inline;display:table;

备注:行内属性标签,为了设置宽高,我们需要设置display:block;(除了input标签比较特殊)。在用float布局并有横向的margin后,在IE6下,他就具有了块属性float后的横向margin的bug。

不过因为它本身就是行内属性标签,所以我们再加上display:inline的话,它的高宽就不可设了。这时候我们还需要在display:inline后面加入display:talbe,这样就解决了间距超出预想的问题。

5.问题之五:

图片间是有默认的间距的。


问题症状:几个img标签放在一起的时候,有些浏览器会有默认的间距,加了通配符也不起作用。

这个碰到的几率也不是特别大,但是也会遇到。

解决方案:使用float属性为img布局

备注 : 因为img标签是行内属性标签,所以只要不超出容器宽度,img标签都会排在一行里,但是部分浏览器的img标签之间会有个间距。去掉这个间距使用float是正道。有时候我们会常用负margin来解决,这办法虽然能解决,但是负margin本身就是很容易引起浏览器兼容问题,所以一般还是少用的好。

6.问题之六:

标签最低高度设置min-height不兼容


问题症状:因为min-height本身就是一个不兼容的CSS属性,所以设置min-height时不能很好的被各个浏览器兼容。

解决方案:如果我们要设置一个标签的最小高度200px,需要进行如下的代码编写:

{
min-height:200px;
height:auto
!important;
overflow:visible;
}


备注:在B/S系统的前端中,有很多情况下我们都有这种需求。当内容小于一个值(如300px)时。容器的高度为300px;当内容高度大于这个值时,容器高度就会被撑高,而不是出现滚动条。这时候我们就会面临这个兼容性问题了。

7.问题之七:

透明度的兼容CSS设置


一般在ie中用的是filter:alpha(opacity=0);这个属性来设置div或者是块级元素的透明度,而在firefox中,一般就是直接使用opacity:0,对于兼容的,一般的做法就是在书写css样式的将2个都写上就行,就能实现兼容了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  浏览器兼容问题