2015-01-21 88 views
0

當我把<!doctype html>它必須在我的HTML的頂部,並在確切的格式?doctype聲明去哪裏?

但是,在我正在做的工作中,我需要使用並且不能更改html代碼,並且我只能添加css文件等。在此html代碼中,該結構對於我見過的任何內容都是獨一無二的它看起來是這樣的:

<html> 
<head> 
</head> 
<body> 
    <doctype html> 
    <link rel="stylesheet" ...> 
    <h1>...</h1> 
    ... 
</body> 
</html> 

我明白什麼是DOCTYPE是和做,我總是把他們的,但我不知道是否該代碼甚至是有效的,或者如果瀏覽器被忽略的問題,只是渲染它。

+0

[DOCTYPE聲明必須是HTML文檔中的第一個標記嗎?](http://stackoverflow.com/questions/69828/does-the-doctype-declaration-have-to-be-第一個標籤在HTML文件) – 2015-01-21 05:51:37

+0

這甚至不是一個有效的DOCTYPE聲明。它應該在文件的頂部,並且缺少! '<!DOCTYPE html>'你應該只是給你的教授發送關於這個HTML的電子郵件......或者只是更新它。該doctype標籤最有可能會被瀏覽器忽略,但它不應該成爲問題。 – 2015-01-21 05:52:32

+1

是的,它似乎是一個組織極其糟糕的任務,除非它是故意的。 – BoltClock 2015-01-21 05:53:05

回答

0

這DOCTYPE聲明是無效的,並且將導致至少某些瀏覽器進入怪異的兼容性模式。

W3C(在w3.org),一個叫html5/syntax.html頁上,說:「一個DOCTYPE是必需的序言」,我理解的意思是必需的,它必須是第一位的。

它還表示,它必須包含在這個順序以下幾部分組成:

  1. 一個字符串,是字符串<!DOCTYPE一個ASCII不區分大小寫的匹配。
  2. 一個或多個空格字符。
  3. 一個字符串,它是字符串html的ASCII不區分大小寫的匹配項。
  4. (可選)一個DOCTYPE傳統字符串或過時的允許的DOCTYPE字符串。
  5. 零個或多個空格字符。
  6. A >(U + 003E)字符。
+0

最後找到這個。 – 2015-01-21 06:19:50

0

HTML <!DOCTYPE>宣言

定義和用法

<!DOCTYPE>聲明必須是你的HTML文檔中的第一件事,在<html>標記之前。

<!DOCTYPE>聲明不是HTML標記;它是網頁瀏覽器關於寫入頁面的HTML版本的指令。

在HTML 4.01中,<!DOCTYPE>聲明引用DTD,因爲HTML 4.01基於SGML。 DTD指定了標記語言的規則,以便瀏覽器正確地呈現內容。

HTML5不基於SGML,因此不需要引用DTD。

提示:總是將<!DOCTYPE>聲明添加到HTML文檔中,以便瀏覽器知道期望的文檔類型。

來源: http://www.w3schools.com/tags/tag_doctype.asp

W3C:

http://www.w3.org/QA/2002/04/valid-dtd-list.html

http://www.w3.org/QA/Tips/Doctype

+0

你能添加一個鏈接或資源嗎?很多信息都是無關緊要的。 – 2015-01-21 05:49:20

+1

謝謝,我爲快速回答和聲明upvoted,但我與w3schools.com牛肉,我真的在尋找一個明確的答案是「是該文檔的聲明有效」,所以我不會接受這個答案作爲正確的一個。 – 2015-01-21 05:56:19

+2

我已經用W3C鏈接更新了我的答案..它對您可能是可靠的。 – 2015-01-21 06:01:38

1

的Html聲明應在該文件的頂部去,因爲它引導網絡瀏覽器 我HTML文檔正在使用哪個版本。 HTML標籤取決於Web瀏覽器和我們正在使用的HTML版本。

+0

你有一個消息來源說它必須在頂部? – 2015-01-21 05:50:39

+0

http://www.w3.org/QA/Tips/Doctype這說標記驗證工具使用此doctype檢查HTML的語法,因此根據我的必要將它放在頂部以允許完整的語法檢查 – 2015-01-21 05:57:21

1

該DOCTYPE聲明沒有正確書寫或正確的位置有效每個這informative but dated article。它實際上是一個HTML評論,而不是一個標籤。

<DOCTYPE>聲明必須是你 文檔中的第一件事,在<html>標籤之前。

它應該是<!DOCTYPE html>位於html標記上方的文件頂部。


至於它是如何處理的,

現代瀏覽器有一個quirks-mode,他們試圖解釋不當書面HTML。我不確定每個瀏覽器如何處理該標籤,但這絕對值得關注:

  1. 該標籤未關閉。所以很可能會將所有內容包裹在內部,這會導致一些意想不到的CSS問題。
  2. 或者DOCTYPE標籤會被完全忽略(這可能只是一廂情願)

快速測試,表明該標籤是一個奇怪的方式來處理。它正在包裝其他內容......種?呃。奇怪:

http://jsfiddle.net/CoryDanielson/6d12grLg/

1

doctype字符串需要在開始時有任何作用。其只有對瀏覽器的影響是影響瀏覽器模式的選擇,即「標準」,「幾乎標準」或「怪癖」模式。當開始時沒有文檔類型字符串時,選擇quirks mode。這對使用CSS有很大的影響。所以,如果這是一項任務,他們要麼玩弄你,要麼無能。

這與規範的說法無關(這在SO的老問題的答案中已經涵蓋)。如果您需要在問題中使用HTML,無論如何,代碼在多個理由(缺少文檔類型字符串,缺少title元素,無效的<doctype html>標記和放置在body內的link元素)時無效。然而,代碼對於「工作」的某些價值觀起作用,但是在怪癖模式中。