為了能夠兼容 IE6 和 IE8,我對(duì)模版再次進(jìn)行了大修,過程無比慘烈。IE6 下莫名其妙的偏移,真讓人惡心。偏偏 IE6 在國內(nèi)的市場占有率高達(dá) 64%(cnzz 在09年12月的統(tǒng)計(jì)結(jié)果)。茍全性命于亂世,只求友好于用戶,迫于無奈,奸榮之。(沒有錯(cuò)別字哦

我發(fā)現(xiàn)的文字不對(duì)齊有3種情況:
(一)當(dāng)中英文對(duì)象的相鄰元素加有vertical-align屬性時(shí)。
原因分析:一般的按鈕文字前面會(huì)帶有一個(gè)小圖片,圖片、文本框和文字放在一起時(shí),垂直方向會(huì)不對(duì)齊,我們會(huì)加上vertical-align:middle來使它們垂直對(duì)齊。這時(shí),會(huì)出現(xiàn)下圖所示的情況:
圖1

這不是一般的不對(duì)齊呀。這一上一下的對(duì)齊就是微軟遵守標(biāo)準(zhǔn)的真實(shí)寫照。浮動(dòng)這些他給你亂處理,達(dá)不到標(biāo)準(zhǔn);濾鏡他又給你亂加上,明明標(biāo)準(zhǔn)就沒有。IE這瀏覽器實(shí)在是可割,可棄!
解決方法:
a、最簡單實(shí)用的辦法,把中英文對(duì)象的字體改成宋體,這一切迎刃而解。b、觸發(fā)中英文對(duì)象的haslayout,也就是給圖1中的img、a、span加上zoom:1或者display:inline-block等可以觸發(fā)hasLayout的屬性(hasLayout詳解見這里)。
示例1:查看演示
PS:我是加了display來激活hasLayout,這樣我才能通過css3標(biāo)準(zhǔn)檢測,哇哈哈!

(二)當(dāng)中英文對(duì)象的父元素加有vertical-align屬性時(shí)。
原因分析:我們希望通過給父元素加上vertical-align:middle,這時(shí),會(huì)出現(xiàn)下圖所示的情況:
圖2

和上一種造成的后果一樣,就是垂直不對(duì)齊。
解決方法:
a、把中英文對(duì)象的字體改成宋體,這個(gè)問題也可以解決(看來改字體還真不錯(cuò)耶)。b、觸發(fā)中英文對(duì)象的haslayout,再給給中英文對(duì)象加上vertical-align:baseline即可。
示例2:查看演示
(三)當(dāng)中英文對(duì)象默認(rèn)使用英文字體,并使用li做float時(shí)。
原因分析:中英文的文字基線不同。當(dāng)默認(rèn)才用英文字體時(shí),中英文混合對(duì)象的英文會(huì)使用你指定的字體,而中文會(huì)使用瀏覽器默認(rèn)的中文字體。例如:Arial字體下邊緣要比宋體(同為12號(hào))低一個(gè)象素,上邊緣比宋體矮兩個(gè)象素。這樣就會(huì)讓float的垂直位置嚴(yán)重偏移,如下圖所示的情況:
圖3

OMG,它出現(xiàn)了,它出現(xiàn)啦~~~它的出現(xiàn)讓float一個(gè)比一個(gè)低??煲偷讲荒芤娙说臅r(shí)候,出現(xiàn)了反彈。這是何等的智能呀!這一刻AI、E.T.、Worm.msBlast、Worm.Sasser靈魂附體,它代表了ie悠久的歷史和傳統(tǒng)。讓標(biāo)準(zhǔn)見鬼去吧!!
解決方法:
a、哈哈,只要把字體改成宋體,也OK(哇塞,改字體萬能了。)b、(ie6下可以用,ie7下無效)還是改字體。英文用tahoma字體,中文用宋體(font-family:tahoma,arial,宋體,sans-serif; 我從淘寶復(fù)制來的字體)缺陷:使用tahoma字體時(shí),在ie6及ie6以下版本,會(huì)導(dǎo)致所有中文字體鏈接的下劃線會(huì)出現(xiàn)與字體粘連現(xiàn)象。
c、英文用Arial字體,中文用宋體(font-family:arial,宋體;)。再給中英文對(duì)象上加line-height:1.231屬性。
示例3:查看演示
PS:全用宋體固然容易解決問題,但是宋體英文字是襯線字體,不好看呀(關(guān)于襯線字體的優(yōu)缺點(diǎn)嘛,請(qǐng)見這篇文章)。所以,英文還是使用無襯線字體更美觀大方。