你的位置:首页 > 网页设计

[网页设计]浏览器兼容性问题及常见的解决方法


一.什么是浏览器兼容性问题

      浏览器兼容性问题又称网页兼容性和网站兼容性问题,指网页在各种浏览器上的显示效果可能不一致二产生浏览器和网页间的兼容问题。在网站的设计和制作中,做好浏览器兼容,才能够让网站在不同的浏览器下都正常显示。而对于浏览器软件的开发和设计,浏览器对标准的更好兼容能够给用户更好的使用体验。

二.浏览器兼容性问题产生原因

     因为不同浏览器使用内核及所支持的HTML等网页语言标准不同;以及用户客户端的环境不同(如分辨率不同)造成的显示效果不能达到理想效果。最常见的问题就是网页元素位置混乱,错位,显示不出。

三.常见的浏览器兼容性问题及解决方法

1.不同浏览器标签默认的外边距和内边距不同(这是最常见也是最容易解决的)。

问题状况:随便写几个标签,在不加样式控制的情况下,不同浏览器的margin和padding的差异较大。

解决方法:在css里使用:*{margin:0px; padding:0px}。

2.块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大。

问题状况:后面的块属性标签被顶到下一行。

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

3.设置较小高度标签(一般小于10px),在IE6、IE7,遨游中高度超出自己设置的高度。

问题状况:IE6、7和遨游里这个表情的高度不熟控制,超出自己设置的高度。

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

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

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

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

5.图片默认有间距。

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

解决方法:使用float为img布局。

6.标签最低高度设置min-height步兼容。

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

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

7.透明度的兼容css设置。

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

  1. /* CSS hack*/ 

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

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

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

比如这样一个CSS设置:

  1. 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。因为优先级相同且想冲突的属性设置后一个会覆盖掉前一个,所以书写的次序是很重要的。