Skip to content

在以前的标准中,块级元素可以包含行级元素,但行级元素不能包含块级元素(a 元素除外),但是现在的标准不同了,行级和块级被废弃了,这点在 4.文本元素 中提及过,现在的包含关系由元素的内容类别决定,这非常复杂。

当然一个比较常见的区分方式是语义化,比如 h1 元素里不能包含 p 元素,因为标题里肯定不能包含一个段落,这样语义化就可以搞定。

如果我们要深究,要查一下 h1 元素是否真的不能包含 p 元素,就去 mdn 查,查询方式如下

3c96cba17e9247644fb434790574ef1b_MD5

查询到 h1 元素后,可以看到它自身的内容类别是流式内容,允许内容就是它允许使用哪些子元素,我们点击短语内容,就会进入一篇文档,在这里就可以看到短语内容的所有元素 0b8017a36828809b17aab1b628a175f6_MD5

我们可以做以下总结

  • 容器元素中可以包含任何元素
  • a 元素几乎可以包含任何元素
  • 有些元素有特定的子元素,例如 ul
  • 标题和段落不能相互嵌套,也不能包含容器元素

以笔记为镜,可以知得失