HTML中的html head body標籤有且只能有一個,為什麼不可以直接省略?


好問題。

答案是:&/&/& 都是 optional tags,當然可以省略(在 HTML5 標準下

事實上,讓我們扔掉 &/&/& ,這也是一個合法的 HTML5 document 哦。

&
&demo&
&This is a paragraph&

更進一步,扔掉 & 里的內容,依然是合法的。

&
&demo&

繼續努力,扔掉 & 就剩一個 doctype

&

這就不合法了,必須要有一個 &

那麼為什麼大多數情況下,我們看到的 HTML5 源碼里都有 &/&/& 呢?那可能是工程師的自覺,也可能是為了兼容老舊的瀏覽器,對於現代瀏覽器來說,並不是必須的。

===========

關於 optional tags ,以及什麼屬於 optional tags ,見 spec

HTML Standard


可以省,自上而下能放head里的都放進head里,遇到第一個不能出現在head里的標籤的人時候自動插入body


可以省略,不信你試試,但是你省略了,估計會被團隊人員打死


可以省略,解析時會自動生成。

在你的css或js要精確控制dom時,省略後的自動補齊因為可能和你預想的不同,或者不同實現不同,而出錯。


Google HTML style guide 里就建議不寫 html、head、body 標籤,然而 Google 自己不是這麼做的……

https://google.github.io/styleguide/htmlcssguide.xml?showone=Optional_Tags#Optional_Tags


有趣的是Google的style guide推薦省掉這幾個標籤

https://google.github.io/styleguide/htmlcssguide.xml#Optional_Tags

&
&
&
&
&Spending money, spending bytes&
&

&
&

Sic.& &
&

&
&
&Saving money, saving bytes&
&

Qed.


&標籤可以有多個啊,在一些最近版本的ff和chrome上查看element會發現被合併成1個


一直都這樣寫,妥妥的沒問題。

注意一下與寫全時的對應關係就好了。

上圖的代碼里,解析時會被放進 body 的第一個節點是 div#root,所以後面的 script 也會被放進 body,如果需要把這個 script 放進 head,就得把它寫在 div#root 前面。

當然也有不適用的場景,當需要給 body 設置屬性的時候。


沒太明白題主的邏輯,「唯一的」和「可省略」並沒有什麼關聯。

頁面里id屬性也都是唯一的,是不是可以直接省略?


少寫了一個&
,損失了幾百萬的流量,這種事兒我會亂說?


document.documentElement和document.body怎麼辦?


唯一證明它的重要性,body在有固定底部的時候很重要,head的作用在移動端,mate聲明全部要放裡面,HTML控制文本寬高,在移動端也很常用,而且這些都是我發現沒有其他可以替代的


沒有它你怎麼用JS來讀寫其屬性、控制頁面的尺寸等等?


推薦閱讀:

bootstrap 用來構建大型互聯網網站前端布局可行性如何?
如何招到一個優秀的前端工程師?
Web 前端的未來會怎樣?
國內有哪些公司在使用 React.js ?
web前端學到什麼程度就可以找工作了?學到什麼程度又可以加工資了?

TAG:前端開發 | HTML | HTML5 | 前端工程師 |