「睿思设计」深圳网站建设-网站设计制作公司-小程序开发

Internet Develppment互联网开发&设计服务提供商

SEARCH

与我们合作

我们专注:网站策划设计、网络多媒体传播、网站优化及网站营销、品牌策略与设计
主营业务:网站建设、移动端微信小程序开发、VI设计、网络运营、云产品·运维解决方案

有一个品牌项目想和我们谈谈吗?

您可以填写右边的表格,让我们了解您的项目需求,这是一个良好的开始,我们将会尽快与您取得联系。当然也欢迎您给我们写信或是打电话,让我们听到您的声音

您也可通过下列途径与我们取得联系:

地 址: 深圳市南山区大冲国际中心12楼

电 话: 15989169178

微 信: 15989169178

邮 箱: idea@runideas.com

网 址: http://www.runideas.cn

快速提交您的需求 ↓

看不清?请点击我

我们常见浏览器兼容性问题与解决方案?

发布日期:2017-03-31  浏览次数:1964  关键词:广州网站建设 广州网站建设公司

常见浏览器兼容性问题与解决方案(面试题目)


1,浏览器兼容问题一:不同浏览器的标签默认的margin和padding不同


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


碰到频率:100%


解决方案:


可以使用Normalize来清除默认样式,具体可参考文章:来,让我们谈一谈 Normalize.css


也可以使用如下代码:


body,h1,h2,h3,ul,li,input,div,span,a,form …… { margin:0; padding:0; }

 


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


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


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


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


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


 


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


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


碰到频率:60%


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


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


 


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


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


碰到几率:20%


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


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


 


5,浏览器兼容问题五:图片默认有间距


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


碰到几率:20% 


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


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


 


6,浏览器兼容问题六:标签最低高度设置min-height不兼容


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


碰到几率:5%


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


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


 


7,浏览器兼容问题七:各种特殊样式的兼容,比如透明度、圆角、阴影等。特殊样式每个浏览器的代码区别很大,所以,只能现查资料通过给不同浏览器写不同的代码来解决。


 


8,清除浮动:


复制代码

    .clearfix::after {

        content: "";

        display: table;

        clear: both;

    }

    

    .clearfix {

        *zoom: 1;

    }

复制代码

  


9,盒模型


Element {

        box-sizing: border-box;

        /*box-sizing: content-box;*/

    }

 


/* CSS hack*/ 


我很少使用hacker的,可能是个人习惯吧,我不喜欢写的代码IE不兼容,然后用hack来解决。不过hacker还是非常好用的。使用hacker我可以把浏览器分为3类:IE6 ;IE7和遨游;其他(IE8 chrome ff safari opera等)


◆IE6认识的hacker 是下划线_ 和星号 *


◆IE7 遨游认识的hacker是星号 *


比如这样一个CSS设置:


div { height: 300px; *height: 200px; _height:100px; }

IE6浏览器在读到height:300px的时候会认为高时300px;继续往下读,他也认识*heihgt, 所以当IE6读到*height:200px的时候会覆盖掉前一条的相冲突设置,认为高度是200px。继续往下读,IE6还认识_height,所以他又会覆盖掉200px高的设置,把高度设置为100px;


IE7和遨游也是一样的从高度300px的设置往下读。当它们读到*height200px的时候就停下了,因为它们不认识_height。所以它们会把高度解析为200px,剩下的浏览器只认识第一个height:300px;所以他们会把高度解析为300px。因为优先级相同且想冲突的属性设置后一个会覆盖掉前一个,所以书写的次序是很重要的。 


做兼容页面的方法是:每写一小段代码(布局中的一行或者一块)我们都要在不同的浏览器中看是否兼容,当然熟练到一定的程度就没这么麻烦了。建议经常会碰到兼容性问题的新手使用。很多兼容性问题都是因为浏览器对标签的默认属性解析不同造成的,只要我们稍加设置都能轻松地解决这些兼容问题。如果我们熟悉标签的默认属性的话,就能很好的理解为什么会出现兼容问题以及怎么去解决这些兼容问题。


实战是解决问题的最佳途径,也是遇到问题的唯一途径,大家多多亲自制作才能更快更好的成长,另外多去借鉴别人的经验也是进步的捷径。

GO 欣赏案例
查看经典案例

TOP

QQ客服

电话咨询

QQ客服 微信咨询 电话咨询
在线咨询
 
重要的事情,电话里聊

接通客服

不方便的时候线上咨询,在线等哦