常见的浏览器兼容问题 - 业余的强迫症患者丶

      2020-06-30 08:36      HTML5

所谓的浏览器兼容性问题,是指因为不同的浏览器对同段代码有不同的解析,造成显效果不统的情况。在多数情况下,我们的需求是,论户什么浏览器来查看我们的站或者登陆我们的系统,都应该是统的显效果。所以浏览器的兼容性问题是前端开发员经常会碰到和必须要解决的问题。

在学习浏览器兼容性之前,我想把前端开发员划分为两类:

第一类是精确按照设计图开发的前端开发员,可以说是精确到1px的,他们很容易就会发现设计图的不,并且在很少的情况下会碰到浏览器的兼容性问题,这些问题往往都死浏览器的bug,并且他们制作的后期易维护,代码重问题少,可以说是较牢固放的代码。

第二类是基本按照设计图来开发的前端开发人员,很多细枝末节差距很,不如间距,,图位置等等经常会差px。某种效果的实现也是反复调试得到,具体为什么出现这种效果还模模糊糊,整体布局分脆弱。稍有改动就乱七糟。代码为什么这么写还不知所以然。这类开发员往往经常为兼容性问题所困。修改好了这个浏览器乱了另个浏览器。改来改去也毫头绪。其实他们碰到的兼容性问题部分不应该归咎于浏览器,是他们的技术本了。

主要针对的是第一类,严谨型的开发员,因此这主要从浏览器解析差异的度来分析兼容性问题。

浏览器兼容问题:不同浏览器的标签默认的外补丁和内补丁不同

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

碰到频率:100%

解决方案:CSS *{margin:0;padding:0;}

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

浏览器兼容问题:块属性标签float后,有横的margin情况下,在IE6显margin设置的

问题症状:常症状是IE6中后的块被顶到下

碰到频率:90%(稍微复杂点的 都会碰到,float布局最常的浏览器兼容问题)

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

备注:我们最常的就是div+CSS布局了,div就是个典型的块属性标签,横向布局的时候我们通常都是divfloat实现的,横向的间距设置如果margin实现,这就是个必然会碰到的兼容性问题。

浏览器兼容问题三:设置较 度标签(般于10px),在IE6,IE7,遨游中度超出 设置度

问题症状:IE6、7和遨游这个标签的度不受控制,超出 设置的度

碰到频率:60%

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

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

浏览器兼容问题四:内属性标签,设置display:block后采float布局,有横的margin的情况,IE6间距bug

问题症状:IE6的间距超过设置的间距

碰到几率:20%

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

备注:内属性标签,为了设置宽,我们需要设置display:block;(除了input标签较特殊)。在float布局并有横向的margin后,在IE6下,他就具有了块属性float后的横向margin的bug。不过因为它本就是内属性标签,所以我们再加上display:inline的话,它的宽就不可设了。这时候我们还需要在display:inline后加display:talbe。

浏览器兼容问题五:元素绑架元素的margin-top

问题症状:这个问题主要出现在IE浏览器中。如果元素和元素之间没有任何内容,将元素设置margin-top后,元素不会动,元素会因为margin-top往下移动。

碰到几率:80%

解决方案:在元素和元素之间加<divstye=‘height:0’></div>。或者设置元素的padding-top。

浏览器兼容问题六:图默认有间距

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

碰到几率:20%

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

备注:因为img标签是内属性标签,所以只要不超出容器宽度,img标签都会排在,但是部分浏览器的img标签之间会有个间距。去掉这个间距使float是正道。(我的个学使负margin,虽然能解决,但负margin本就是容易引起浏览器兼容问题的法,所以我禁他们使)

浏览器兼容问题七:标签最低度设置min-height不兼容

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

碰到几率:5%

解决方案:如果我们要设置个标签的最度200px,需要进的设置为:{min-height:200px;height:auto!important;height:200px;overflow:visible;}