由于市場上瀏覽器種類眾多,而不同瀏覽器其內核亦不盡相同,所以各個瀏覽器對網頁的解析就有一定出入,這也是導致瀏覽器兼容問題出現(xiàn)的主要原因,我們的網頁需要在主流瀏覽器上正常運行,就需要做好瀏覽器兼容。
常見的瀏覽器:
使用Trident內核的瀏覽器:IE、Maxthon、TT;
使用Gecko內核的瀏覽器:Netcape6及以上版本、FireFox;
使用Presto內核的瀏覽器:Opera7及以上版本;
使用Webkit內核的瀏覽器:Safari、Chrome
常說的兼容性問題,主要是說IE與幾個主流瀏覽器如firefox,google等。而對IE瀏覽器來說,IE7又是個跨度,因為之前的版本更新甚慢,bug甚多。從IE8開始,IE瀏覽器漸漸遵循標準,到IE9后由于大家都一致認為標準很重要,可以說在兼容性上比較好了,但是在中國來說,由于xp的占有率問題,使用IE7以下的用戶仍然很多,所以我們不得不考慮低版本瀏覽器的兼容。
對瀏覽器兼容問題,一般分,HTML,Javascript兼容,CSS兼容。 其中html相關問題比較容易處理,無非是高版本瀏覽器用了低版本瀏覽器無法識別的元素,導致其不能解析,所以平時注意一點就是。特別新的結束出現(xiàn)帶來高更好開發(fā)效率,但是老版本的適應性格就會出現(xiàn)問題.
問題一:不同瀏覽器的標簽默認的外補丁和內補丁不同
問題癥狀:隨便寫幾個標簽,不加樣式控制的情況下,各自的margin 和padding差異較大。
碰到頻率:100%
解決方案:css里 *{margin:0;padding:0;}
備注:這個是最常見的也是最易解決的一個瀏覽器兼容性問題,幾乎所有的css文件開頭都會用通配符*來設置各個標簽的內外補丁是0。
問題二:塊屬性標簽float后,又有橫行的margin情況下,在ie6顯示margin比設置的大
問題癥狀:常見癥狀是ie6中后面的一塊被頂?shù)较乱恍?/p>
碰到頻率:90%(稍微復雜點的頁面都會碰到,float布局最常見的瀏覽器兼容問題)
解決方案:在float的標簽樣式控制中加入 display:inline;將其轉化為行內屬性
備注:我們最常用的就是div+css布局了,而div就是一個典型的塊屬性標簽,橫向布局的時候我們通常都是用div float實現(xiàn)的,橫向的間距設置如果用margin實現(xiàn),這就是一個必然會碰到的兼容性問題。
問題三:設置較小高度標簽(一般小于10px),在ie6,ie7,遨游中高度超出自己設置高度
問題癥狀:ie6、7和遨游里這個標簽的高度不受控制,超出自己設置的高度
碰到頻率:60%
解決方案:給超出高度的標簽設置overflow:hidden;或者設置行高line-height 小于你設置的高度。
備注:這種情況一般出現(xiàn)在我們設置小圓角背景的標簽里。出現(xiàn)這個問題的原因是ie8之前的瀏覽器都會給標簽一個最小默認的行高的高度。即使你的標簽是空的,這個標簽的高度還是會達到默認的行高。
問題四:行內屬性標簽,設置display:block后采用float布局,又有橫行的margin的情況,ie6間距bug(類似第二種)
問題癥狀:ie6里的間距比超過設置的間距
總結:隨著版本以及使用的新技術, 我們盡著最大的解決問題的原則去適應一些老的版本, 新舊技術相沖突的話,也是需要有所舍棄的,我們主要迎合的還是大部分用戶的瀏覽器。