當IE7 beta1推出的時候,我在第一時間對它作了個測試。當時發現它對CSS的支援幾乎沒有任何變化,著實失望了一陣。MS在最近推出了IE7 beta2,這次有了不少新的改進和變化。但這些改進和變化會導致一些原來正常網頁出現布局錯誤或者原來可以使用的Hack技巧不再可用。MSDN在年初的時候把這些可能產生的問題羅列給開發人員(這是原文),這裡我把其中比較主要的問題簡單地描述一下,希望能對大家有所協助。
注意,在IE7正版發布之前,以下提到所有內容都是有可能變化的。
盒模型變了!!!
這恐怕是會讓那些使用Web標準建設大型網站的開發人員感到背脊發涼的變化,不過不用太擔心,主要的變化是在盒模型對溢出(overflow)內容的處理方法。
假設有一個100px寬100px高的盒子,在這個盒子裡放一個200px寬200px高的圖片。目前IE的正理方法是自動把盒子“撐大”到200px見方。而IE7 beta2的處理方法和FF是一致的:盒子不變,溢出的部分在盒子外面被渲染。也就是說盒子的overflow值真正地使用了W3C的預設值“visible”。
如果你現有的布局是依賴於IE的“自動撐開”,那麼要小心,很可能會出現問題(特別是動態內容的網頁)。
XML序言(prolog)可能會影響盒模型
Oh,My GOD!又是盒模型!
大家知道IE有兩種渲染模式:Quirks Mode和Strict Mode。Quirks Mode基本上是非標準的,包括盒模型在內,它的渲染方式與W3C的標準有些出入。而Strick Mode基本上是標準的(反正都不是絕對標準也不是絕對不標準……)。IE6及以前版本會根據寫在XHTML文檔第一行(也只能是第一行)的DocType聲明來選擇渲染模式。如果發現了一個它能識別的DocType,比如XHTML Transitional或者XHTML Strict等等,它就使用Strict Mode來渲染。其他所有情況下都使用Quirks Mode。
有些開發人員為了顯式地聲明他們的XHTML文檔是一個XML,會在文檔的第一行(問題就在這裡,它也必須在第一行)加上XML的序言(prolog)。比如:
<?xml version="1.0" encoding="gb2312"?> 雖然初衷是為了讓文檔更“標準”,但由於IE不認這行字,結果還是按Quirks Mode來渲染。
IE7 beta2解決這個問題,它會跳過prolog來看檢查DocType。所以可能會出現IE6及以下版本用Quirks Mode渲染而IE7 beta2用Strict Mode渲染的情況。