常見瀏覽器兼容性問題與解決方案總結

無論在寫什麼項目,只要牽扯到瀏覽器總會出現大大小小的一系列兼容性問題,下面就總結下時常遇到的瀏覽器兼容問題,以及其解決的辦法。

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個都寫上就行,就能實現兼容了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章