10 個答案:
答案 0 :(得分:98)
style應該僅包含在文檔的head中。
除了驗證點之外,在style上使用body時可能感興趣的一個警告是flash of unstyled content。浏覽器會在顯示後顯示樣式的元素,使它們在大小/形狀/字型和/或閃爍上移動。這通常是工藝糟糕的表現。一般情況下,您可以将style放在任何您想要的地方,但盡可能避免使用它。
HTML 5引入了scoped屬性,允許style标記包含在正文的任何位置,但随後又将其删除。
答案 1 :(得分:19)
雖然其他答案都是正确的,但我很驚訝沒有人解釋哪裡标準不允許head之外的樣式。
是的,我知道。 DTD難以閱讀。
這是STYLE元素出現的唯一地方,是以隐含地在其他地方無效。
答案 2 :(得分:18)
根據最新的WhatWG和W3C規範,是的,style元素必須始終位于head。有一段時間,規範包含scoped元素的style屬性,當存在時,允許将它們放置在正文中的元素内,以僅設定該元素的後代的樣式...但該特征從不使它成為任何真正的浏覽器(至少不需要通過開發人員标志啟用)并從兩個規範"due to lack of implementer interest"中删除。是以,style元素現在隻允許在允許中繼資料内容的上下文中使用,而中繼資料内容隻是頭部。
(好吧,相當是真的 - 您可以合法地将中繼資料内容(包括style元素)放在body内的template元素中,但它如果你在支援模闆的浏覽器中,它實際上不會生效。這實際上隻是一個愚蠢的技術性。)
CTRL-Fing single-page spec顯示内容模型包含中繼資料内容的唯一進制素是head元素。
同時,latest W3C draft spec包含完全相同的措辭,但它們還列出了template元素的内容模型中的中繼資料内容。 (WhatWG以不同的方式概括template并将其内容模型列為nothing。)
WhatWG規範中的非規範性index of elements确認style元素的唯一允許父級是head或noscript元素。 (同一索引的W3版本錯誤地指出流内容可以包含
答案 3 :(得分:14)
他們不應該超越頭腦,但無論如何他們都會工作;雖然你可能會注意到快速閃爍。該網站不應該使用頭部以外的樣式标簽進行驗證,但這真的很重要嗎?此外,連結标簽也可以在頭部以外工作,即使它們不應該也是如此。
答案 4 :(得分:4)
與其他回複一樣,它實際上并不需要在那裡。但是,它不會驗證。在這種情況下,這可能或不重要,但請記住,html的渲染完全取決于浏覽器。據我所知,今天使用的所有浏覽器都支援将它置于腦外,但是你不能保證将來的浏覽器和未來的浏覽器版本。
堅持标準,你就更安全了。非常讨論會有多安全。
答案 5 :(得分:3)
HTML5.2 W3C建議,2017年12月14日(不是上面提到的早期草案)說,您可以加入
答案 6 :(得分:3)
内的任何地方的樣式标記都不會使用W3C規則進行驗證。
答案 7 :(得分:2)
根據此網站,HTML5.1(草案中)和WHATWG允許将
浏覽器似乎也支援了很長一段時間。根據StackOverflow的回答,Firefox 3 +,IE6 +,Safari 2+和Chrome 12+支援它:
答案 8 :(得分:1)
根據HTML 5.2規範(草案中),樣式标記僅允許在文檔的頭部。
樣式元素僅限于出現在頭部
文檔。
答案 9 :(得分:-1)
您可以在頭部或身體部分内使用樣式标記,也可以在html标記之外使用樣式标記(不建議使用外側html)。實時項目很多時候你可以看到他們在html标簽旁邊使用樣式标簽