[译]HTML进阶之Content categories

原文链接:https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories

  1. 主要内容目录
    • 元数据
    • 章节
    • 标题
    • 短语
    • 内嵌
    • 交互
    • 可触
    • 表单
  2. 次要内容目录
    • 脚本支持元素
  3. 透明内容模型
  4. 其他内容模型

每个HTML标签都是一定数量的内容目录中的一员,内容目录是一个具有相同特性的标签组。标签组的划分是不严格的,因为实际上组内的标签之间是没有任何联系的,但是对于定义和描述他们必须遵守的行为和规则来说是十分有帮助的,尤其是当你深入到他们的错综复杂的细节中时。有些元素,不属于任何这些内容目录。

有三种内容目录:

  • 主要内容目录,描述了许多标签遵循的普通内容规则。
  • 表单内容目录,描述了表单相关标签的内容规则。
  • 特殊内容目录,描述了一些稀有标签的内容规则,有时只在特定的上下文中生效。

主要内容目录

元数据内容

元数据类型标签会修改当前演示文档或是剩余文档的行为,例如建立到其他文档的链接,或者是实现与其他文档的通信。

属于这个目录的标签包括:<base>, <command>, <link>, <meta>, <noscript>, <script>, <style> and <title>

流式内容

流式内容标签典型特征是包含文本或者是内嵌内容。属于此类的标签包括:<a>, <abbr>, <address>, <article>, <aside>, <audio>, <b>,<bdo>, <bdi>, <blockquote>, <br>, <button>, <canvas>, <cite>, <code>, <command>, <data>, <datalist>, <del>, <details>, <dfn>, <div>, <dl>, <em>, <embed>, <fieldset>, <figure>, <footer>, <form>, <h1>, <h2>, <h3>, <h4>, <h5>, <h6>, <header>, <hgroup>, <hr>, <i>, <iframe>, <img>, <input>, <ins>, <kbd>, <keygen>, <label>, <main>, <map>, <mark>, <math>, <menu>, <meter>, <nav>, <noscript>, <object>, <ol>, <output>, <p>, <pre>, <progress>, <q>, <ruby>, <s>, <samp>, <script>, <section>, <select>, <small>, <span>, <strong>, <sub>, <sup>, <svg>, <table>, <template>, <textarea>, <time>, <ul>, <var>, <video>, <wbr> 和文本节点.
有一些标签也属于此类,但前提是需要满足一些条件

  • <area>,是<map>标签的子标签时。
  • <link>, itemprop属性有初始值时。
  • <meta>, itemprop属性有初始值时。
  • <style>, scoped属性有初始值时。

章节内容

属于章节内容模型的标签能够在清晰地在大纲中划分一部分区域出来,例如<header><footer>和标题内容标签。
属于章节内容的标签有<article>, <aside>, <nav> 和<section>.

标题内容

标题内容定义了章节的标题,由一个显式的章节内容标签标记或者隐式的由标题内容标签自己定义。
属于标题内容的标签有<h1>,<h2>,<h3>,<h4>,<h5>,<h6>以及<hgroup>

短语内容

短语内容定义了他包含的文本和包含的标签,多个短语内容组成段落
短语内容标签包括:<abbr>, <audio>, <b>, <bdo>, <br>, <button>, <canvas>, <cite>, <code>, <command>, <data>, <datalist>, <dfn>, <em>, <embed>, <i>, <iframe>, <img>, <input>, <kbd>, <keygen>, <label>, <mark>, <math>, <meter>, <noscript>, <object>, <output>, <progress>, <q>, <ruby>, <samp>, <script>, <select>, <small>, <span>, <strong>, <sub>, <sup>, <svg>, <textarea>, <time>, <var>, <video>, <wbr>和非空纯文本。

有一些需要满足特定条件才属于此目录的标签:

  • <a>, 仅包含内容短语时
  • <area>, 是<map>标签的子孙元素时
  • <del>, 仅包含内容短语时
  • <ins>, 仅包含内容短语时
  • <link>, itemprop属性有初始值时
  • <map>, 仅包含内容短语时
  • <meta>, itemprop属性有初始值时

内嵌内容

内嵌内容标签导入其他内容,或者插入内容到其他标签语言和文档命名空间中。属于这个目录的标签有:```<audio>,<canvas>,<embed>,<iframe>,<img>,<math>,<object>,<svg>,<video>.

交互内容

交互内容标签包含专门为了用户交互而设计的标签。属于这个目录的标签有:<a>, <button>, <details>, <embed>, <iframe>, <keygen>, <label>, <select>, and <textarea>.
有一些需要满足特定条件才属于此目录的标签:

  • <audio>, controls属性有初始值时
  • <img>, usemap属性有初始值时
  • <input>, type类型不在隐藏状态中时
  • <menu>,type类型不在工具栏状态中时
  • <object>, usemap属性有初始值时
  • <video>, controls属性有初始值时

可触内容

内容既不空也不隐藏;它是呈现的内容,是实质性的。其模型是流程内容或措辞内容的元素应该至少有一个可触摸的节点。

表单相关内容

表单相关内容包含具有表单所有者的标签,由form属性暴露出去。一个表单父节点可以是<form>元素,也可以是其id在表单属性中被指定了的元素。

<button>
<fieldset>
<input>
<keygen>
<label>
<meter>
<object>
<output>
<progress>
<select>
<textarea>

这个目录由于较为复杂,因此还有几个子目录:

可枚举的

在 form.elements 和 fieldset.elements IDL 集合中列举出的元素. 包括 <button>,<fieldset>,<input>,<keygen>,<object>,<output>,<select> 和 <textarea>

可标记的

与<label>标记相关的标签,包括<button>,<input>,<keygen>,<meter>,<output>,<progress>,<select> 和 <textarea>。

可提交的

可用来在表单提交时,组成表单数据的元素。包括<button>,<input>,<keygen>,<object>,<select>和<textarea>

可重置的

表单重置时会影响到的标签。包括:<input>,<keygen>,<output>,<select> 和 <textarea>.

次要内容目录

还有一些次要的内容目录可以简单了解下。

脚本支持标签

脚本支持标签不直接影响文档渲染后输出的结果。相反,它们通过直接包含或指定脚本代码来支持脚本,或者通过指定什么数据被脚本使用。
脚本支持标签包括:

  • <script>
  • <template>

透明内容模型

如果一个标签属于特殊内容模型, 即使将透明内容更换为子元素,其内容必须由合法的HTML5元素组成。
例如,<del> 和 <ins> 是透明的:
<p>We hold these truths to be <del><em>sacred &amp; undeniable</em></del> <ins>self-evident</ins>.</p>
如果这两个元素被移除,这个程序段依然是合法的。
<p>We hold these truths to be <em>sacred &amp; undeniable</em> self-evident.</p>

其他内容模型

sectioning root

sectioning root category 的作用是把它的内容与常规的大纲隔离。

译文完毕。

附:
如果你有耐心读到这里,恭喜你,你将会了解到vue的单文件组件对于本文中一些不被人所熟知的标签的应用。
来看个vue官方的hello world单文件组件:



单文件组件主要包含3个标签,<template>,<script>,<style>。

我们从上述标签中找出这3个标签属于的分类。

  • <template>:流式标签,脚本支持标签。(flow content , Script-supporting elements。)
  • <script>:元数据标签,流式标签,短语标签,脚本支持标签。(Metadata content , Flow content , Phrasing content , Script-supporting elements)
  • <style>:元数据标签,流式标签(因为此时scoped有定义,也就是style标签中的样式只作用于当前当文件组件的作用域)。(Metadata content , Flow content(the scoped attribute is present))

再来简单分析下。

template,符合流式标签和脚本支持的特点。主要包含包含内嵌内容和文本:例如双向数据绑定模板;而且也包含脚本代码且指定数据被脚本使用:例如事件处理函数的调用。

script,主要符合元数据和脚本支持的特点。元数据的原因是这里可以导入依赖,也能实现组件间通信,或者是vuex通信;会有脚本支持的情况,例如事件处理函数的定义。

style,主要是流式标签,没有元数据的成分。因为这里加的scoped主要是为了内嵌样式内容。

翻译此文之前,我还以为template标签和style的scoped是尤雨溪自己创造出来的,翻译完才发现,原来是W3C组织定义的,被自己的天真和无知所打败,看来要好好审视下"精通html,css和javascript"这句话了。

努力成为优秀的前端开发工程师!

期待和大家交流,共同进步,欢迎大家加入我创建的与前端开发密切相关的技术讨论小组:

努力成为优秀前端工程师!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容