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 内容分类

标签分类示意图如下,这里列出常用分类与常用标签。

img

标签根据内容分类分成两大类:元数据内容、流式内容。内容分类是松散分组,两组之间可能是包含关系或交叉关系,一个标签可能属于一个、多个或零个分类。每个类别可以理解成一个性质,一个标签有多个性质,特定情况下它的分类(性质)可能发生变化。


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>

第一个段落是规范用法,后续段落使用违反规范。开发者工具元素面板查看解析结果。

img


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>

开发者工具查看解析元素结构。

img

试一试。查看常用标签的基本特征,故意违反要求,查看浏览器解析结果。