精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

HTML規(guī)范:標(biāo)簽,閉合還是不閉合?

開發(fā) 前端
你在寫 HTML5 代碼的時(shí)候,糾結(jié)過,而且我發(fā)現(xiàn)這個(gè)話題其實(shí)比我想象中有意思的多。如果你對我的研究過程不感興趣,你可以直接跳到“合法性”這一節(jié)得到答案。

你在寫 HTML5 代碼的時(shí)候,是否糾結(jié)過應(yīng)該寫 <br /> 還是 <br>,是寫 <input /> 還是寫 <input>。寫 <script src="script.js" /> 為什么是錯(cuò)的呢?反正我糾結(jié)過,而且我發(fā)現(xiàn)這個(gè)話題其實(shí)比我想象中有意思的多。

如果你對我的研究過程不感興趣,你可以直接跳到“合法性”這一節(jié)得到答案。

無內(nèi)容元素(Void elements)

無內(nèi)容元素是一種不能包含任何內(nèi)容的特殊元素。而其他元素,比如 <div>,則既可以不包含任何內(nèi)容,又可以包含另一個(gè)元素或者文字。

比較常見的無內(nèi)容元素有:

  1. <br> <hr> <img> <input> <link> <meta> 

不太常見的無內(nèi)容元素有:

  1. <area> <base> <col> <command> <embed> <keygen> 
  2. <param> <source> <track> <wbr> 

現(xiàn)存所有的無內(nèi)容元素就是以上這些了。

<br></br> 這樣的寫法是不合法的 HTML 寫法,因?yàn)樗凳?br 可以包含內(nèi)容(但 <br>你好!</br> 是完全沒有意義的)。而 <br> 和 <br /> 這兩種寫法都很常見。

盡管我們都知道 XHTML 強(qiáng)制你必須寫成 <br />,但 HTML 里卻沒有明文規(guī)定。

追溯歷史

為了完全地了解無內(nèi)容元素,我們有必要了解一下它的歷史。

HTML、XML 和 XHTML 都是基于 SGML 的,SGML 的全稱是“標(biāo)準(zhǔn)通用標(biāo)記語言”,起草于1986年。
HTML 和 XML 都派生自 SGML,其中 XML 是 SGML 的約束性子集,而 XHTML 是基于 XML 的。

XHTML 基本上和 HTML 一樣,但是是基于 XML 的。

知道這層關(guān)系后,接下來進(jìn)入本文最有意思的部分。

SGML 有一個(gè)特性叫做“無尾標(biāo)簽(NET,Null End Tag)”。當(dāng)標(biāo)簽內(nèi)只有簡單的文字的時(shí)候,使用無尾標(biāo)簽就可以無須再閉合這個(gè)標(biāo)簽了。比如你可以把 <quote>Quoted text</quote> 寫成 <quote/Quoted text/。(你沒有看錯(cuò),這個(gè)標(biāo)簽中不含 >。)

那么,不包含任何內(nèi)容的標(biāo)簽就可以寫成 <quote// 了,其中 quote 是標(biāo)簽名,***個(gè) / 用于啟用無尾標(biāo)簽,第二個(gè) / 表示無尾標(biāo)簽結(jié)束。

如果按照這個(gè)邏輯,<br// 中的前半部分 <br/ 會(huì)被解析為 <br>,那么 <br/> 豈不是要被解析為 <br>> 了嗎?如果你和我想得一樣,你肯定也會(huì)覺得這種語法很蠢。

不幸的是 HTML4 規(guī)范的制定者們不這么認(rèn)為,并且把它寫進(jìn)規(guī)范里了。不過顯然當(dāng)時(shí)的瀏覽器廠商對這種語法也不以為然,支持的程度不大。(在這一點(diǎn)上,說不定瀏覽器廠商們做了一件好事。)

XML (也適用于 XHTML)規(guī)范的制定者意識到這種語法不怎么好,就直接沒有包含無尾標(biāo)簽這種特性,
同時(shí)為無內(nèi)容標(biāo)簽提供了一種比較好理解的語法。這種語法的名字叫做“無元素標(biāo)簽”,它看起來是這樣的:<br />。這種語法看起來非常自然,因此當(dāng)時(shí)的大多數(shù)開發(fā)者都認(rèn)為這才是正確的寫法。

幸運(yùn)地是 HTML 一直在改進(jìn),W3C 的成員一直在從他們過去作出的錯(cuò)誤中學(xué)習(xí)經(jīng)驗(yàn)教訓(xùn)。因此 HTML5 相比之前的版本才有這么大的進(jìn)步。

在介紹 HTML5 的新語法時(shí), W3C 說:

HTML5 的語法完全兼容 HTML4 和 XHTML1,但是不兼容 SGML 中那些晦澀的 HTML4 特性。比如無尾標(biāo)簽(<em/content/)。

HTML5 好樣的!

(我覺得他們應(yīng)該保留“短標(biāo)簽”特性,比如 <strong>不錯(cuò)喲</>,我覺得這個(gè)特性很酷。不過,至少現(xiàn)在的 HTML 已經(jīng)不再是那么雜亂無章了。)

合法性

好吧,我們回到文章開頭關(guān)于合法性的問題,目前的 HTML5 規(guī)范中關(guān)于非內(nèi)容標(biāo)簽的解釋是這樣的:

此類標(biāo)簽應(yīng)由下列部分組成,順序須與下表保持一致:

  • 一個(gè) “<” 字符。
  • 標(biāo)簽名。
  • 此項(xiàng)可選,一個(gè)或多個(gè)屬性,每一個(gè)屬性的前面必須有一個(gè)或多個(gè)空格。
  • 此項(xiàng)可選,一個(gè)或多個(gè)空格。
  • 此項(xiàng)可選,一個(gè) “/” 字符,此項(xiàng)只能在無內(nèi)容元素中出現(xiàn)。
  • 一個(gè) “>” 字符。

倒數(shù)第二部分的 “/” 字符是可選的,而且沒有任何實(shí)際含義。所以 <br> 和 <br /> 其實(shí)沒有實(shí)質(zhì)區(qū)別。

正確性

喜歡 XML 和 XHTML 的開發(fā)者可能會(huì)說,“對呀,雖然 / 是可選的,但是 <br /> 的寫法‘更正確’一些。”

我必須告訴你你錯(cuò)了。事實(shí)上,有觀點(diǎn)認(rèn)為無內(nèi)容標(biāo)簽里的 / 其實(shí)是一個(gè)被容忍的語法錯(cuò)誤。這種容忍是基于兼容性考慮的,它使得所有瀏覽器和解析器都把 <br> 和 <br /> 同等對待。

關(guān)于這一點(diǎn),Google 代碼風(fēng)格指南 也明確規(guī)定了不要關(guān)閉無內(nèi)容標(biāo)簽。

缺點(diǎn)

當(dāng)然,不關(guān)閉無內(nèi)容標(biāo)簽也有弊端,不過我認(rèn)為這掩蓋不了它的優(yōu)點(diǎn):使你的代碼干凈簡潔。

***個(gè)缺點(diǎn)就是開發(fā)者必須知道哪些標(biāo)簽的無內(nèi)容標(biāo)簽。假設(shè)你不知道 <img> 是不是無內(nèi)容標(biāo)簽,那么當(dāng)你找不到它的閉合標(biāo)簽時(shí),你就會(huì)疑惑到底應(yīng)不應(yīng)該關(guān)閉這個(gè)標(biāo)簽。不過無內(nèi)容標(biāo)簽總共也只有那么幾個(gè),而且一般一眼就能看出來某個(gè)標(biāo)簽是不是無內(nèi)容標(biāo)簽。

第二個(gè)缺點(diǎn)是編輯器可能對沒有閉合的無內(nèi)容標(biāo)簽處理不好。編輯器的開發(fā)者們必須了解無內(nèi)容標(biāo)簽,提供恰當(dāng)?shù)恼Z法高亮和代碼補(bǔ)全。當(dāng)你在編輯器里寫了一個(gè) <input>,編輯器必須要知道它后面永遠(yuǎn)不會(huì)接一個(gè) </input>。

但是這些功能實(shí)現(xiàn)起來很簡單,我所知道的編輯器對這方面支持得都還挺好,所以這算不上一個(gè)真正的缺點(diǎn)。

我對無內(nèi)容標(biāo)簽的看法

我覺得無內(nèi)容標(biāo)簽這個(gè)概念其實(shí)是可以從 HTML 中剔除的,我們完全可以給這些標(biāo)簽添加內(nèi)容,來代替它的某些屬性。

以 <img> 標(biāo)簽為例,它有一個(gè)強(qiáng)制的 alt 屬性,這個(gè)屬性的存在是為了讓那些看不到圖片的用戶(可能是因?yàn)樯砣毕荩部赡苁且驗(yàn)樗麄兪褂玫脑O(shè)備不支持圖片)知道這個(gè)圖片的內(nèi)容是什么(如果圖片只是處于美觀考慮,你其實(shí)不應(yīng)該添加 alt 屬性)。

我的問題來了:為什么不用 <img> 的內(nèi)容代替 alt 屬性?我認(rèn)為這樣寫更直觀:

<img src="doge.png">Image of doge</img>。

<meta> 標(biāo)簽甚至還有一個(gè)叫 content 的屬性!為什么不直接把 content 的值寫在標(biāo)簽的內(nèi)容里呢?<input value="Value content"> 應(yīng)該寫成 <input> Value content</input> ,就像 <textarea> 那樣。其他標(biāo)簽不一而足。

所以真正應(yīng)該保留的無內(nèi)容標(biāo)簽只有少數(shù)幾個(gè),只不過 W3C 必須考慮向后兼容性,所以要改變現(xiàn)狀還是很困難的。

***的想法:<script> 標(biāo)簽

這個(gè)標(biāo)簽真的很困擾我,因?yàn)樗暮x很簡單,寫法卻很羅嗦。<script src="my-script.js"></script> 這種寫法看起來似乎是錯(cuò)的,因?yàn)?<script> 的內(nèi)容與 my-script.js 并沒有邏輯關(guān)聯(lián)。(HTML 規(guī)范允許你同時(shí)給它添加內(nèi)容和 src 屬性)

問題在于 <script> 標(biāo)簽不是一個(gè)無內(nèi)容標(biāo)簽,你可以把 JavaScript 寫在它里面。所以這里并沒有可選的 / 閉合標(biāo)記(譯注:這就是為什么<script src="script.js" />的寫法是錯(cuò)的)。

使用 <link> 標(biāo)簽來代替 <script> 就***了,因?yàn)樗呀?jīng)被用于導(dǎo)入外部文件,而且提供了所有必需的屬性。當(dāng)然,Web 平臺總是需要考慮向后兼容,不然所有不支持這種語法的舊式瀏覽器全都無法解析你的頁面了。

原文鏈接: Matias Meno   翻譯: 伯樂在線 - 方應(yīng)杭

譯文鏈接: http://blog.jobbole.com/61514/

責(zé)任編輯:林師授 來源: 伯樂在線
相關(guān)推薦

2010-09-13 09:54:56

CSS浮動(dòng)元素

2010-09-01 09:51:39

CSSHackfloat

2024-10-29 16:18:32

YOLOOpenCV

2010-09-02 14:17:56

CSS浮動(dòng)

2021-06-07 00:15:26

瀏覽器HtmlParser

2020-04-16 21:02:35

前端命名規(guī)范html規(guī)范

2017-09-28 08:35:35

前端HTML標(biāo)簽大全

2009-06-05 10:12:36

Struts標(biāo)簽庫HTML標(biāo)簽

2016-09-29 15:19:04

HTMLCSSWeb

2023-12-12 07:16:34

HTML標(biāo)簽開發(fā)

2009-09-15 21:35:01

IT運(yùn)維管理裁員摩卡軟件

2009-07-02 15:03:00

HTML 5

2010-09-13 09:35:28

DIVCSS

2009-06-08 16:57:00

Struts HTML

2012-09-18 09:17:34

Java規(guī)范代碼代碼

2022-05-20 08:17:43

Java日志

2010-06-24 09:54:50

HTML 5Video標(biāo)簽

2016-10-21 10:00:01

HTML標(biāo)簽WEB

2009-12-31 17:31:23

Silverlight
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

国产乱对白刺激视频不卡| 精品99在线| 亚洲地区一二三色| 日韩电影中文字幕在线观看| 黄色片视频在线免费观看| 你懂的在线免费观看| 日本伊人色综合网| 欧美极品少妇xxxxⅹ裸体艺术| 97人妻天天摸天天爽天天| 黄色成人在线视频| 亚洲精品中文字幕乱码三区 | 亚洲成人va| 亚洲精品自拍动漫在线| 日本成人三级电影网站| 99热这里只有精品在线| 日本女人一区二区三区| 欧美激情免费在线| 欧美自拍偷拍网| 欧美有码在线| 日韩欧美一级片| 99视频在线视频| 国产精品电影| 亚洲精品日韩综合观看成人91| 久久伊人一区| 亚洲成人精品女人久久久| 日韩成人免费在线| 2023亚洲男人天堂| 久草国产在线观看| 天天色天天射综合网| 亚洲日韩欧美视频一区| 成年女人免费视频| 成人激情久久| 欧美人牲a欧美精品| 青青在线视频免费| 欧美一级鲁丝片| 亚洲福利一区二区三区| 女同性恋一区二区| 亚洲s色大片| 国产亚洲综合av| 久久国产精品久久精品国产| 亚洲va欧美va| 国产sm精品调教视频网站| 国产欧美日韩精品专区| 精品乱码一区内射人妻无码| 免费中文字幕日韩欧美| 91av在线视频观看| 国产69精品久久久久久久久久| 欧美精品首页| 欧美福利视频网站| 久草视频免费在线| 狠狠干成人综合网| 欧美大片免费观看| 久久久久亚洲av无码专区 | 国产精品专区在线| 手机电影在线观看| 亚洲一区二区成人在线观看| 视色,视色影院,视色影库,视色网 日韩精品福利片午夜免费观看 | 国产人与禽zoz0性伦| 日韩精品欧美激情一区二区| 中日韩午夜理伦电影免费| 亚洲av毛片基地| 久久在线免费| 欧美成人中文字幕| 免费看一级一片| 亚洲第一在线| 奇米4444一区二区三区| 最新中文字幕第一页| 美腿丝袜亚洲三区| 92福利视频午夜1000合集在线观看| 国产视频在线免费观看| 国产不卡一区视频| 精品国产乱码久久久久久郑州公司 | 久久久久亚洲天堂| 亚洲女人av| 国产成人欧美在线观看| 136福利视频导航| 国产精品一区二区视频| 国产精品乱子乱xxxx| 日本一二三区在线视频| 中文字幕免费不卡在线| 干日本少妇视频| 黄色软件视频在线观看| 91久久久免费一区二区| 视频免费1区二区三区| 综合激情五月婷婷| 一本色道久久88亚洲综合88| 国产免费一区二区三区四区| 激情欧美一区| 国产精品扒开腿爽爽爽视频| 国内精品久久久久久久久久| 91丨porny丨中文| 亚洲欧美国产不卡| 久久不射影院| 欧美自拍丝袜亚洲| 国产性猛交96| av影片在线一区| 欧美激情中文字幕乱码免费| 亚洲综合图片网| 国产精品综合网| 日韩精品久久久| 国产精品久久久久毛片| 国产成人精品影院| 欧美极品一区| 午夜羞羞小视频在线观看| 黑人欧美xxxx| 老女人性生活视频| 精品在线91| 欧美激情一级精品国产| 成人一二三四区| 成人av在线播放网址| 亚洲视频在线观看日本a| 欧美xxxxhdvideosex| 在线免费观看不卡av| 国产精品91av| 天天综合久久| 国产精品久久久久久久7电影| 国产综合在线播放| 国产精品国模大尺度视频| 欧美日韩亚洲第一| 伊人久久大香线蕉av超碰| 国产小视频国产精品| 日本学生初尝黑人巨免费视频| 久久精品国产99久久6| 久久精品二区| 国产后进白嫩翘臀在线观看视频| 欧美乱熟臀69xxxxxx| 国产精品一区二区无码对白| 欧美在线1区| 国产日韩精品一区二区| 男女视频在线观看| 午夜精品久久久久久久99樱桃| 欧美性猛交xxxx乱大交91| 成人情趣视频| 国产成人一区二区三区小说| 日本在线视频1区| 精品久久久在线观看| 成人在线观看一区二区| 雨宫琴音一区二区三区| 91精品久久久久久久| 欧美激情午夜| 欧美日韩视频在线第一区 | 欧美视频国产视频| 欧美日韩精品在线一区| 国产成人免费av| 久久精品色图| 日本精品一区二区三区高清| 亚洲黄色在线网站| 亚洲中字在线| 蜜桃999成人看片在线观看| 啊啊啊久久久| 亚洲精品久久久久久下一站| 黄色片视频网站| 97se亚洲国产综合在线| 人妻少妇精品无码专区二区| 欧美黄色录像| 欧美一级视频在线观看| 日韩电影免费| 在线视频你懂得一区| wwwww黄色| 久久精品国产亚洲一区二区三区 | 一起草在线视频| 亚洲一区黄色| 日韩av一区二区三区在线观看| 成人日韩在线观看| 最新国产精品亚洲| 99久久久国产精品无码免费| 亚洲自拍偷拍图区| 中文人妻一区二区三区| 久久精品道一区二区三区| 色综合电影网| 懂色av色香蕉一区二区蜜桃| 九九视频这里只有精品| 日韩中文字幕影院| 91黄色小视频| 欧洲美女女同性互添| 国产成人免费网站| 91视频最新入口| 9999国产精品| 成人激情在线观看| 国产免费拔擦拔擦8x高清在线人| 亚洲精品影视在线观看| 亚洲字幕av一区二区三区四区| 亚洲人成精品久久久久| 欧美无人区码suv| 美女一区二区视频| 欧美又粗又长又爽做受| 国产欧美高清视频在线| 91文字幕巨乱亚洲香蕉| 欧美xxxxxx| 久久亚洲精品中文字幕冲田杏梨| 蜜臀av免费在线观看| 91官网在线观看| 欧美精品xxxxx| 国产午夜精品一区二区三区嫩草| 五月天六月丁香| 午夜影院日韩| 99久热在线精品视频| 亚洲成人一品| 999精品视频一区二区三区| 色偷偷偷在线视频播放| 久久视频在线播放| 日韩精品视频在线观看一区二区三区| 91精品在线观看入口| 国产中文字幕视频| 亚洲一区二区视频在线观看| 国产黄色录像视频| av电影在线观看一区| 亚洲妇熟xx妇色黄蜜桃| 久久一区中文字幕| 国产高清www| 久久久久久久久丰满| 日本一区二区三区在线视频| 欧美激情99| 波多野结衣成人在线| av播放在线| 亚洲高清久久网| 日韩精品人妻中文字幕| 国产精品电影一区二区| 国产ts丝袜人妖系列视频| 国产精品18久久久久| 日韩欧美国产片| 久久精品国产清高在天天线| 国产成人永久免费视频| 91亚洲成人| 四虎永久国产精品| 奇米影视777在线欧美电影观看| 91在线观看免费| 国产综合色激情| 国产国语videosex另类| 一区二区三区电影大全| 久久久在线视频| 欧美日韩色网| 另类视频在线观看| 日本视频在线| 精品国产依人香蕉在线精品| 国产一区二区三区福利| 日韩av影视在线| 午夜一区在线观看| 精品国产凹凸成av人导航| av观看在线免费| 91麻豆精品国产91久久久更新时间| 老熟妇一区二区三区啪啪| 色乱码一区二区三区88| 免费污污视频在线观看| 欧美小视频在线| 久久久久久久久久久久久av| 黑人欧美xxxx| 欧美男人亚洲天堂| 色先锋资源久久综合| 久久久久久久久久成人| 日韩欧美国产激情| 91丨九色丨海角社区| 欧洲日韩一区二区三区| 亚洲视频一区在线播放| 欧美一区午夜精品| 国产999久久久| 日韩亚洲电影在线| 亚洲国产精品成人久久蜜臀| 亚洲成av人影院在线观看| 色丁香婷婷综合久久| 日韩精品视频三区| 国产精品久久久久一区二区国产 | 97se亚洲综合| www.国产精品一区| 久久精品国产精品青草色艺 | 欧美97人人模人人爽人人喊视频| 国产欧美一区二区三区视频| 精品国产伦一区二区三区观看说明| 91蜜桃网站免费观看| 欧美巨大xxxx| 日本一区二区三不卡| 国产精品videosex性欧美| 屁屁影院ccyy国产第一页| 中文在线不卡| 亚洲综合av在线播放| 国产电影一区在线| 亚洲a v网站| 亚洲婷婷国产精品电影人久久| 精品无码久久久久久久| 色偷偷成人一区二区三区91| 亚洲天堂自拍偷拍| 精品久久久久久久久久久久久久久久久| 亚洲av成人无码久久精品老人 | 91超碰免费在线| 日本精品中文字幕| 亚洲一区二区小说| 好吊色欧美一区二区三区四区| 国产在视频线精品视频www666| 黄色高清视频网站| 亚洲免费观看| 97超碰人人爽| kk眼镜猥琐国模调教系列一区二区| 成人激情五月天| 亚洲午夜一二三区视频| 中文字幕+乱码+中文乱码www| 精品久久人人做人人爰| 第一福利在线| 91sa在线看| av在线亚洲一区| 欧美日韩最好看的视频| 欧美国内亚洲| gogogo高清免费观看在线视频| 不卡的看片网站| 成人高潮免费视频| 色偷偷久久一区二区三区| 亚洲精品人妻无码| 日韩中文字幕在线视频| 小视频免费在线观看| 91福利视频导航| 欧美hd在线| 精品久久久久久久免费人妻| 成人综合婷婷国产精品久久| 肉色超薄丝袜脚交69xx图片 | 国产精品精品国产色婷婷| 日本一区二区三区免费视频| 欧美理论片在线| 国产精品麻豆一区二区三区| 欧美亚洲一区在线| 成人在线tv视频| 51xx午夜影福利| 久久精品国产色蜜蜜麻豆| 男人舔女人下部高潮全视频| 亚洲第一精品在线| 亚洲高清视频在线播放| 久久视频在线看| 欧美黄页免费| 亚欧洲精品在线视频免费观看| 亚洲中午字幕| 蜜桃传媒一区二区亚洲av| 亚洲一区二区三区不卡国产欧美 | 亚洲黄页视频免费观看| 神马午夜伦理不卡| 99久久精品无码一区二区毛片| 香蕉视频国产精品 | 成人午夜视频在线| 欧美久久久久久久久久久久| 欧美一区中文字幕| 国产最新在线| **亚洲第一综合导航网站| 91成人影院| 亚洲成人手机在线观看| 亚洲男人的天堂在线aⅴ视频| 国产伦理吴梦梦伦理| 色偷偷91综合久久噜噜| 亚州精品国产| 少妇高潮流白浆| 国产一区欧美二区| a级片在线观看免费| 91精品国产综合久久久蜜臀粉嫩| 麻豆tv入口在线看| 亚洲最大av网站| 国产精品啊v在线| 亚洲欧美日韩色| 红桃av永久久久| 日本福利片在线| 国产精品高清在线| 欧美独立站高清久久| 拔插拔插华人永久免费| 亚洲欧美激情视频在线观看一区二区三区| 国产婷婷在线视频| 欧美大学生性色视频| 久久九九热re6这里有精品| 欧美视频在线播放一区| 国产色产综合产在线视频| 在线免费观看日韩视频| 久久99精品久久久久久噜噜| 丁香一区二区| 成年人在线看片| 中文字幕亚洲综合久久菠萝蜜| 性一交一乱一乱一视频| 欧美夜福利tv在线| 欧美色婷婷久久99精品红桃| 免费网站在线观看黄| 亚洲综合视频在线观看| 欧美性孕妇孕交| 成人h猎奇视频网站| 激情欧美日韩| 日本污视频网站| 欧美v日韩v国产v| 成人午夜视屏| 亚洲免费视频播放| 91麻豆福利精品推荐| 影音先锋国产资源| 久久久久久午夜| 青青一区二区三区| 国产精品果冻传媒| 欧美午夜电影网| www欧美xxxx| 亚洲一区精彩视频| 成人性生交大片免费看视频在线| 国产成人无码专区| 欧美日韩国产第一页| 国产成人黄色| 人妻 丝袜美腿 中文字幕| 欧美少妇性性性| 欧美13videosex性极品| 中国成人亚色综合网站| www日韩大片| 亚洲精品.www| 成人激情视频网|