5.1 HTML标签的基本特征
HTML标签定义也称为标签的基本特征。当HTML代码不符合标签定义时,可以认为是错误代码,浏览器将HTML代码解析成符合定义的元素结构。
常用标签的定义。
标签 | 内容分类 | 允许的子元素 | 标签省略 | 允许的父元素 |
---|---|---|---|---|
div | 流式内容 | 流式内容 | 双标记 | 流式内容 |
span | 流式内容 短语内容 | 短语内容 | 双标记 | 流式内容、短语内容 |
h1-h6 | 流式内容 标题内容 | 短语内容 | 双标记 | 流式内容 |
p | 流式内容 | 短语内容 | 通常双标记 | 流式内容 |
img | 流式内容 短语内容 嵌入内容 | 空 | 单标记 | 通常为流式内容 |
a | 流式内容 短语内容 交互内容 | 后代不能是交互内容、不能是a | 双标记 | 流式内容、短语内容 |
br | 流式内容 短语内容 | 空 | 单标记 | 通常为流式内容 |
ul/ol | 流式内容 | 多个li元素 | 双标记 | 流式内容 |
li | 无 | 流式内容 | 通常双标记 | ul、ol、menu |
input | 流式内容 短语内容 | 无 | 单标记 | 通常为流式内容 |
允许子元素即对应允许内容。允许的父元素一列的流式内容主要指无小类的流式内容。
5.1.1 MDN查看标签的基本特征
标签具有4项基本特征:内容分类、内部允许内容、标签省略、允许的父元素。不同标签具有不同的特征值。MDN查询hr标签特征示例。
技术概要
内容分类: 流式内容。
允许的内容: 无,是一个空元素。
标签省略: 必须有开始标签,不能有结束标签。
允许的父元素: 所有接受流式内容的元素。
本教程标签“基本特征”,MDN称作“技术概要Technical summary”,w3称作“定义definition”。
元素的定义(w3)= 元素的技术概要(MDN)= 标签的基本特征(本教程)
5.1.2 内容分类
标签分类示意图如下,这里列出常用分类与常用标签。
标签根据内容分类分成两大类:元数据内容、流式内容。内容分类是松散分组,两组之间可能是包含关系或交叉关系,一个标签可能属于一个、多个或零个分类。每个类别可以理解成一个性质,一个标签有多个性质,特定情况下它的分类(性质)可能发生变化。
1、元数据内容
不会在页面内容区显示。包括:link、meta、script、style、title等,每个元数据标签有特定用途。meta用于设置字符集等,style用于设置内部样式等。
2、流式内容
body内部显示内容。除不可见的元数据标签,其它常用标签基本都属于流式内容,例外:html标签不在body内部,不属于流式内容;li标签只能在ul、ol等特定标签内,官方也没有把li归到流式内容。
流式内容标签包含如下小类,所有小类的集合并不是完整的流式内容。
(1)无小类标签。有些标签只属于大类流式内容不属于小类,如div、p、ul、table等,大部分用作容器,内部通常嵌套其它元素。
(2)标题标签。表示标题。常用标签:h1~h6。本质属性display: block。
(3)短语标签。通常多个短语标签可以在同一行。常用标签:span、button、iframe、img、input、textarea、i、纯文本。特点:本身不具备换行。本质属性display: inline。
(4)嵌入内容标签。通常具有src属性引入其它文件。常用标签: img、iframe。本质属性src。
(5)交互标签。常用标签:a、input、button、label、select、textarea。交互标签不仅能在页面显示,用户还能对元素进行操作,元素对操作做出反应。元素的交互能力通常对应一个标签属性。a提供跳转的交互,本质属性href;input提供输入数据的交互,本质属性value;button提供单击的交互,本质事件onclick。
(6)可感知标签。一般不关注,略。
MDN查看常用标签的内容分类。
div 内容分类: 流式内容、可感知内容
span 内容分类: 短语内容、流式内容
p 内容分类: 流式内容、可感知内容
a 内容分类: 流式内容、 短语内容、 交互内容、可感知内容
html 内容分类: 无
试一试。分析img的内容类型,并查看MDN验证。
5.1.3 允许内容
说明标签内部是否能继续加入内容,如果能则说明允许的内容分类。
(1)div标签示例。MDN查询允许内容:“流式内容”,表示内部能够包括块级元素、标题元素、短语元素等流式内容。
<div>小步教程</div>
<div>
<span>xiaobuteach.com</span>
</div>
(2)hr标签示例。MDN查询允许内容:“无,是一个空元素”,表示不能包含内容体。
下列是包含内容体的不规范用法。
<hr>小步教程</hr>
(3)p标签示例。MDN查询允许内容:“短语内容”,也就是不能包括块级元素、标题元素等。
<body>
<p>小步教程 xiaobuteach.com</p>
<p>
<div>小步教程 xiaobuteach.com</div>
</p>
<p>
<h1>小步教程 xiaobuteach.com</h1>
</p>
<p>
<p>小步教程 xiaobuteach.com</p>
</p>
</body>
第一个段落是规范用法,后续段落使用违反规范。开发者工具元素面板查看解析结果。
5.1.4 标签省略
说明开始标签与结束标签能否省略。如果不能省略则属于双标记标签,反之属于单标记标签。MDN查询div与hr标签的标签省略。
div标签省略: “不允许,开始标签和结束标签都不能省略。”
hr标签省略: “必须有开始标签,不能有结束标签”。
下列用法不规范。自行查看解析结果。
<hr></hr>
5.1.5 允许的父元素
说明允许的父标签的内容类型。绝大多数标签允许的父元素是流式内容,少部分标签有限制。
MDN查询div与tr标签允许的父元素。
div允许的父元素: “任何接受流式内容的元素。”
tr允许的父元素: “table、thead、tbody、tfoot。”
下列的tr与td是错误用法
<div>
<tr>小步教程</tr>
<td>小步教程</td>
</div>
开发者工具查看解析元素结构。
试一试。查看常用标签的基本特征,故意违反要求,查看浏览器解析结果。