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