標籤:ie6 font html 開啟 產生 padding roman span nts
使用 Web 標準產生 ASP.NET 2.0 Web 網站
XHTML 和 DOCTYPE 切換
為 Web頁指定 DOCTYPE 會影響瀏覽器呈現頁的方式。Internet Explorer、Mozilla Firefox 和 Opera 全都支援一種名為“DOCTYPE 切換”(也叫“DOCTYPE 嗅探”)的功能。
引入 DOCTYPE 切換的目的是使瀏覽器能夠正確地呈現符合標準的 Web 網站以及舊式 Web 網站。大多數 Web 網站被開發為呈現 HTML 頁而不是 XHTML 頁。瀏覽器通過判斷是否存在 DOCTYPE 來確定何時應該使用標準來呈現頁。
Internet Explorer 6+ 支援兩種呈現模式,分別叫做 Quirks 模式和 Standards 模式。當 Internet Explorer 呈現包含有效 XHTML(或 HTML 4.0)DOCTYPE 的頁時,它會以 Standards 模式呈現該頁;否則,它會以 Quirks模式呈現該頁(有關詳細資料,請參閱 CSS Enhancements in Internet Explorer 6)。
Opera 瀏覽器 (Opera 7+) 支援與 Internet Explorer 相同的兩種呈現模式:Quirks 和 Standards(有關詳細資料,請參閱 http://www.opera.com/docs/specs/doctype/)。
Mozilla Firefox 1+ 支援三種呈現模式:Quirks 模式、Almost Standards 模式和 Standards 模式。Firefox 的Almost Standards 模式對應於 Internet Explorer 和 Opera 的 Standards 模式。當頁包含有效 XHTML 1.0 Transitional DOCTYPE(並且該頁被分配為 text/html MIME 類型)時,Firefox 會以 Almost Standards 模式呈現該頁。當頁包含 XHTML 1.0 Strict 或 XHTML 1.1 DOCTYPE(或者該頁被分配為 XML MIME 類型)時,該頁將以 Standards模式呈現(有關詳細資料,請參閱 http://www.mozilla.org/docs/web-developer/quirks/doctypes.html)。
可以通過臨時向頁中添加以下用戶端指令碼(該指令碼在最新版本的 Internet Explorer、Firefox 和 Opera 中有效)確定瀏覽器的當前呈現模式。
<script type="text/javascript"> alert( document.compatMode ); </script>
您需要關心瀏覽器的呈現模式,因為它會影響將層疊樣式表應用於該頁的方式。如果將現有 HTML 頁轉換為 XHTML 頁,那麼在瀏覽器中開啟它們時,它們可能看起來非常不同。
例如,Internet Explorer 以不同方式計算頁元素的大小,這取決於呈現模式(它使用不同的 CSS Box Model)。在Quirks 模式下,元素的寬度是通過將元素的內容、內邊距、邊框和邊距相加而計算得到的。在 Standards 模式下,元素的寬度是只考慮元素內容的寬度而計算得到的。
例如,考慮下列兩個 <div> 標記。
<div style="width:400px;border:solid 1px black">
First Box
</div>
<div style="width:400px;border:solid 1px black;padding:10px">
Second Box
</div>
除了第二個 <div> 元素的附加內邊距以外,這兩個 <div> 元素是相同的。在 Quirks 模式(參見圖 2)下,這兩個<div> 元素看起來大小相同,因為在計算第二個 <div> 元素的寬度時考慮了它的附加內邊距(這兩個元素的總寬度為400px)。在 Standards 模式(參見圖 3)下,第二個 <div> 元素看起來要比第一個 <div> 元素寬,因為在計算元素的寬度時未考慮內邊距(這兩個元素的總寬度大於 400px)。
圖 2. Quirks 模式
圖 3. Standards 模式
這隻是 Quirks 模式下瀏覽器差異的一個樣本。在 Quirks 模式下,每個瀏覽器都以相當不同的方式實現 W3C層疊樣式表標準。有關切換到 Standards 模式的一個妙處在於,它強制幾乎所有現代瀏覽器以非常類似的方式(不完全相同,但要好得多)解釋 W3C標準。
如果希望 Web 頁以相同方式出現在所有瀏覽器中,那麼通過包含 XHTML 1.0 Transitional DOCTYPE 觸發 Standards 模式(在 Internet Explorer 和 Opera 中)和 Almost Standards 模式(在 Firefox 中)是一個好主意。幸運的是,預設情況下,Visual Studio .NET 2005 和 Visual Web Developer 自動將該 DOCTYPE 添加到每個新的 ASP.NET 頁中。
轉寄 XHTML 和 DOCTYPE 切換(MSDN)