HTML4中,元素被分成两大类: inline(内联元素)与block(块级元素)。但在实际的开发过程中,因为页面表现的需要,前端工程师经常把inline元素的display值设定为block(比如a标签),也经常把block元素的display值设定为inline;之后更是出现了inline-block这一对外呈现inline、对内呈现block的属性。因此,简单地把HTML元素划分为inline与block已经不再符合实际需求。

基于这种考虑,在HTML5中,标准制定者重新定义了HTML元素的分类,并根据这一新的分类定义了元素的内容模型(Content Model) -- 对于一个元素而言,哪些子元素是合法的,而哪些子元素是非法的。

HTML5中,元素主要分为7类:

Metadata

Flow

Sectioning

Heading

Phrasing

Embedded

Interactive

这些分类集合互相之间也存在一定的交集(一个元素可以同时属于多个分类),其交集关系呈现为:

需要注意的是,HTML5中的这种元素分类与inline、block没有任何关系,任何元素都可以在CSS中被定义为display:inline或者display:block。另外,除了这7大分类,还存在一些较小的分类,如Palpable、Script-Supporting等。

Metadata

顾名思义,Metadata元素意指那些定义文档元数据信息的元素 — 其作用包括:影响文档中其它节点的展现与行为、定义文档与其它外部资源之间的关系等。以下元素属于Metadata:base, link, meta, noscript, script, style, template, title。

Flow

所有可以放在body标签内,构成文档内容的元素均属于Flow元素。因此,除了base, link, meta, style, title等只能放在head标签内的元素外,剩下的所有元素均属于Flow元素。

Sectioning

Sectioning意指定义页面结构的元素,具体包含以下四个:article, aside, nav, section。

Heading

所有标题元素属于Heading,也即以下6个元素:h1, h2, h3, h4, h5, h6。

Phrasing

所有可以放在p标签内,构成段落内容的元素均属于Phrasing元素。因此,所有Phrasing元素均属于Flow元素。在HTML5标准文档中,关于Phrasing元素的原始定义为:

Phrasing content is the text of the document, as well as elements that mark up that text at the intra-paragraph level. Runs of phrasing content form paragraphs.

对于这一定义,个人认为不应当使用“text”这一容易引起误解的词,事实上,一个元素即使不是文本,只要能包含在p标签中成为段落内容的一部分,就可以称之为Phrasing元素。比如:audio、video、img、select、input等元素(经测试,这些元素都可以放置在p标签中)。一个不太精确的类比是:HTML5中的Phrasing元素大致就是HTML4中所定义的inline元素。

Phrasing元素内部一般只能包含别的Phrasing元素。

关于Phrasing元素,Stackoverflow上有一个比较精彩的问答,可供参考。

Embedded

所有用于在网页中嵌入外部资源的元素均属于Embedded元素,具体包含以下9个:audio, video, img, canvas, svg, iframe, embed, object, math。

Interactive

所有与用户交互有关的元素均属于Interactive元素,包括a, input, textarea, select等。

内容模型(Content Model)

根据以上元素分类,HTML5标准文档定义了任何元素的内容模型 — 对于该元素而言,何种子元素才是合法的。

比如,对于p元素而言,其内容模型为Phrasing, 这意味着p元素只接受Phrasing元素为子元素,而对于像div这样的非Phrasing元素则并不接受。类似的,li元素的内容模型为Flow,因此任何可以放置在body中的元素都可以作为li元素的子元素。

值得注意的是,HTML5标准文档在定义元素的内容模型时,会使用一类特殊的分类:透明内容模型(transparent) — 对于内容模型为透明(transparent)的元素而言,其子元素的合法性由其父元素所决定;如果其父元素的内容模型仍为透明,则查看其祖父元素的情况,并依此类推;如果向上推演至body标签仍未找到任何内容模型非透明的父级元素,则该透明元素内部可包含任何Flow元素。

典型的具有透明内容模型的元素为a元素。因此,当a出现在p标签中时,a不能接受div作为子元素;而当a出现在div标签中时,a可以接受div作为子元素。对此,知乎上有一个问答解释了这种现象:http://www.zhihu.com/question/34952563

阅读类型HTML,W3C HTML5标准阅读笔记 – 元素分类与内容模型(Content Model)相关推荐

  1. html5的a能不能放div,从a标签为什么不能包含div标签-了解HTML5元素分类与内容模型...

    我们知年有这只制明个手近天点里要它出水机近天点道按新的 HTML 规范,已经不按 inline 和 block 来区分元素类型了.所以我们在a标签里面使用div标签时候会发现a标签并不能通过改变css ...

  2. html samp如何转成块,W3C HTML5标准阅读笔记 - code、var、samp、kbd

    HTML5中,有4个标签与"代码"."程序"有关:code.var.samp.kbd. code 顾名思义,code标签用于标记计算机程序代码,一般仅包含小的代 ...

  3. CSS3与页面布局学习笔记(二)——盒子模型(Box Model)、边距折叠、内联与块标签、CSSReset

    一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border ...

  4. 下列不属于html5语义元素,HTML5 新的语义元素

    HTML5 提供了新的语义元素来明确一个Web页面的不同部分: HTML5中新的语义元素 HTML5 元素 标签定义文档中的节(section.区段).比如章节.页眉.页脚或文档中的其他部分. 根据W ...

  5. 阅读与html阅读的区别,w3c School读书笔记(一):HTML基础

    html的基础知识 文档的基本结构 题目 一级标题 脑图 html_基础的结构 常见元素 结构类 定义了文档的框架结构 块级元素,标题,1-6 字体逐渐减小 块级元素,组织文本的段落 块级元素其他元素 ...

  6. 如何在阅读参考文献时,有效率的做笔记?

    在撰写论文时,时常需要阅读大量的参考文献.此时若有效率地记笔记,可以增进对阅读内容的了解,并于撰写论文时减少时间耗费与挫折感.以下为记笔记的几个重点: 1. 确认哪种类型的概念是笔记重点 先列出有关研 ...

  7. html5程序阅读题,20 个重要的 HTML5 面试题及答案

    本帖最后由 月亮是我掰弯的 于 2016-10-14 16:00 编辑 我是一个ASP.NET MVC的开发者,最近在我找工作的时候被问到很多与HTML5相关的问题和新特性.所以以下面试可能遇到的重要 ...

  8. 2021 WIDC信息安全挑战赛预赛回顾与OBD-II标准阅读

    周五参加了世界智能驾驶挑战赛(WIDC) 信息安全挑战赛并通过了预赛,5月中旬将进行线下比拼.一共有 50多只队伍参赛,其中前12名晋级复赛.预赛为线上赛,比赛分为"基础理论"和& ...

  9. 论文阅读笔记——基于CNN-GAP可解释性模型的软件源码漏洞检测方法

    本论文相关内容 论文下载地址--Engineering Village 论文阅读笔记--基于CNN-GAP可解释性模型的软件源码漏洞检测方法 文章目录 本论文相关内容 前言 基于CNN-GAP可解释性 ...

最新文章

  1. libsybcomn64.dll php,libsybcomn.dll下载|
  2. java ee核心技术与应用_Java EE核心技术与应用(全面覆盖Java EE 6) 郝玉龙等著 pdf扫描版[103MB]...
  3. 不是python中用于开发用户界面的第三方库-Python三方库:wxPython(GUI图形用户界面)...
  4. Maven私服搭建(Nexus Repository Manager 3)
  5. Unity 安卓连调profile失败
  6. Creator-配置MSVC调试器
  7. 大数据实验报告总结体会_建设大数据中台架构思考与总结
  8. 条件概率的一些结论以及理解
  9. PX4飞控控制投放装置
  10. 【转】图解Sql2005创建分区表的全过程
  11. Delphi2007下cxComboBox乱码.
  12. OVF 和 OVA 文件格式和模板的区别
  13. hill密码 java_希尔密码(Hill Cipher)的实现
  14. 中国农业会计杂志中国农业会计杂志社中国农业会计编辑部2022年第12期目录
  15. Hudi Clean 清理文件实现分析
  16. 英语修辞手法( rhetorical devices)
  17. 信息系统开发与管理【一】之 管理信息系统导论
  18. Google收购传感器公司Lumedyne
  19. 每日新闻:徐小平:硬科技仍处在学习阶段;微软发布会定档10月2日 以升级现有产品线为主...
  20. STL优先队列实现堆(模板 附力扣题目)

热门文章

  1. 如何使用eclipse打开已有工程
  2. 运行Qt release版本时出现“丢失QtCore4.dll”错误
  3. 转wordpress小工具制作前台后台全解析
  4. dojo Quick Start/dojo入门手册--package机制
  5. SAP BW BEx工具集简单介绍【AV+PPT】
  6. 基于模板引擎的代码生成器Smart Code预览
  7. php计算器使用方法,php--计算器的算法实现(-)
  8. 【VC基础】3、配置参数文件
  9. 坚持不懈,直到成功-I will persist. I will win.
  10. 43、Power Query-函数综合应用