爲什麼我們需要HTML/JSP頁面中的文檔類型?沒有它,頁面似乎就可以工作。爲什麼我們需要DOCTYPE到HTML/JSP頁面?
回答
Zeldman wrote
每HTML和XHTML標準,一個 DOCTYPE(以下簡稱「文檔類型聲明 」)通知驗證 哪個版本的(X)HTML你使用, 和必須出現在每個網頁的頂部 。 DOCTYPE是一個關鍵 兼容網頁的組成部分:您的 標記和CSS不會驗證沒有 他們。
,並看看24條途徑 「Transitional vs. Strict Markup」
在未來的HTML 5,你只需要聲明
<!DOCTYPE HTML>
查看http://www.quirksmode.org/css/quirksmode.html的全面討論;簡而言之,doctype應該引發頁面渲染和行爲的quirks/strict模式。
不幸的是,人們開始投入文檔而不知道他們在做什麼,從而減少了它們的有用性。
Escpecially微軟IE有一定的一大難題文檔類型或完全缺乏文檔類型。 At the bottom of this page您可以結合某些文檔類型找到瀏覽器行爲的簡要概述。有三種標準的行爲:
- Q - Quirksmode。你真的不想那麼做。它在IE中觸發box model bug。然後,CSS
width
和height
錯誤地覆蓋了padding
和border
。 - A - 幾乎標準模式。價格合理,只有垂直大小的表格單元格不符合CSS2規範。如果你想避免mysterious gaps of images in table cells有用。
- S - 標準模式。瀏覽器試圖完全符合w3 HTML/CSS標準。首選模式,因爲它是唯一的模式,您可以更少或更確定您的網站在所有瀏覽器中看起來完全一樣。
下面是一段HTML,它演示了IE中的盒子模型錯誤。 Copy'n'paste'n'run它。在出現<!DOCTYPE html>
時,您會看到一個矩形。如果沒有doctype行,您會看到一個真正的廣場。
<!DOCTYPE html>
<html lang="en">
<head>
<title>Remove DOCTYPE to trigger quirksmode</title>
<style>
#box {
background: yellow;
width: 100px;
padding: 20px;
border: 20px solid black;
margin: 20px;
}
</style>
</head>
<body>
<div id="box">box</div>
</body>
</html>
當你想要一個「pixelperfect」網頁設計時,這個IE bug的影響是最引人注目的。
當然,所有的html文檔都需要DOCTYPE來聲明html的版本,並告訴瀏覽器如何翻譯html 這樣你就可以避免很多瀏覽器的bug。
當您在頁面上設置DOCTYPE時,會強制瀏覽器進入符合標準的模式,該模式會強制執行更嚴格的呈現規則。
如果你不使用它,IE可能會退回到怪癖模式,這可能會導致頁面顯示問題。
doctype它是一個向瀏覽器發出有關使用標記語言版本的指令。 doctype啓用html屬性。
- 1. Github的頁面:爲什麼我需要一個gh頁面
- 2. DavLockDB:我們需要什麼?
- 3. 爲什麼我們需要simple_one_for_one?
- 4. 爲什麼我們需要TensorFlow tf.Graph?
- 5. 爲什麼我們需要使用prompt.start()?
- 6. 爲什麼我們需要scalaz.stream迭代?
- 7. 爲什麼我們需要WCF
- 8. 爲什麼我們需要Anaconda 2.7?
- 9. 爲什麼我們需要編寫log.isDebugEnabled?
- 10. 爲什麼我們需要ng-click?
- 11. 爲什麼我們需要Control.Lens.Reified?
- 12. 我們爲什麼需要纖維
- 13. 爲什麼我們需要org.junit.ComparisonFailure?
- 14. 爲什麼我們需要addRequestHeader方法?
- 15. 爲什麼我們需要時代?
- 16. 爲什麼我們需要ContinueWith方法?
- 17. 爲什麼我們需要Java NIO Selector?
- 18. 爲什麼我們需要使用ExitWindowsEx
- 19. 爲什麼我們需要包裝類
- 20. 爲什麼我們需要在JavaScript
- 21. 爲什麼我們需要設置SONAR_RUNNER_OPTS?
- 22. 爲什麼我們需要ioc容器
- 23. mongodb爲什麼我們需要getSisterDB
- 24. 爲什麼我們需要BeginGetResponse和BeginRead?
- 25. 爲什麼我們需要fieldset標籤?
- 26. 爲什麼我們需要boost :: thread_specific_ptr?
- 27. JSP:爲什麼我們需要RequestDispatcher?
- 28. 爲什麼我們需要calloc(或malloc)?
- 29. 爲什麼我們需要.htaccess的worpdress?
- 30. 爲什麼我們需要9補丁?