前面的话

  在html5中,<a>元素的子元素可以是块级元素,这在以前是被认为不符合规则的。本文将详细介绍html5的标签嵌套规则

分类

  html5出现之前,经常把元素按照block、inline、inline-block来区分。在html5中,元素不再按照display属性来区分,而是按照内容模型来区分,分为元数据型(metadata content)、区块型(sectioning content)、标题型(heading content)、文档流型(flow content)、语句型(phrasing content)、内嵌型(embedded content)、交互型(interactive content)。元素不属于任何一个类别,被称为穿透的;元素可能属于不止一个类别,称为混合的。

  元数据元素(metadata content)是可以被用于说明其他内容的表现或行为,或者在当前文档和其他文档之间建立联系的元素

  1. base link meta noscript script style template title

  流元素(flow content)是在应用程序和文档的主体部分中使用的大部分元素

  1. a abbr address area(如果它是map元素的子元素) article aside audio b bdi bdo blockquote br button canvas cite code data datalist del dfn div dl em embed fieldset figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd keygen label main map mark math 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 u ul var video wbr text

  区块型元素(sectioning content)是用于定义标题及页脚范围的元素

  1. article aside nav section

  标题型元素(heading content)定义一个区块/章节的标题

  1. h1 h2 h3 h4 h5 h6

  语句型元素(phrasing content)是用于标记段落级文本的元素

  1. a abbr area (如果它是map元素的子级) audio b bdi bdo br button canvas cite code data datalist del dfn em embed i iframe img input ins kbd keygen label map mark math meter noscript object output progress q ruby s samp script select small span strong sub sup svg template textarea time u var video wbr text

  嵌入型元素(embedded content)是引用或插入到文档中其他资源的元素

  1. audio canvas embed iframe img math object svg video

  交互型元素(interactive content)是专门用于与用户交互的元素

  1. a audio(如果设置了controls属性) button embed iframe img(如果设置了usemap属性) input(如果type属性不为hidden) keygen label object(如果设置了usemap属性) select textarea video (如果设置了controls属性)

子元素

【1】子元素是流元素

  1. <article><section><blockquote><li><dd><figcaption><div><main><td>

  【1.1】子元素是流元素,不包括<main>元素

  1. <aside><nav>

  【1.2】子元素是流元素,但不包括<table>元素

  1. <caption>

  【1.3】子元素是流元素,但不包括<form>元素

  1. <form>

  【1.4】子元素是流元素,但不包括<header>、<footer>、<main>元素

  1. <header><footer><main>

  【1.5】子元素是流元素,但不包括<header>、<footer>、区块型元素(sectioning content)、标题型元素(heading content)

  1. <dt><th>

  【1.6】子元素是流元素,但不包括<header>、<footer>、<address>、区块型元素(sectioning content)、标题型元素(heading content)

  1. <address>

  【1.7】子元素是一个<figcaption>元素,紧跟着流元素

  1. <figure>

  【1.8】子元素是一个<legend>元素,紧跟着流元素

  1. <filedset>

【2】子元素是语句型元素

  1. <h1><h2><h3><h4><h5><h6><p><pre><em><strong><small><s><cite><q><abbr><data><time><code><var><samp><kbd><sub><sup><i><b><u><mark><bdi><bdo><span><input><output><legend><label>

  【2.1】子元素是语句型元素,但不包括和自身相同的元素

  1. <dfn><progress><meter>

  【2.2】子元素是语句型元素,但不包括交互型元素(interactive content)

  1. <button>

【3】子元素是transparent(以它的父元素允许的子元素为准)

  1. <ins><del><map>

  【3.1】子元素是transparent(以它的父元素允许的子元素为准),但不包括交互型元素(interactive content)

  1. <a>

  【3.2】子元素可以没有、可以是<param>元素,也可以是transparent(以它的父元素允许的子元素为准)

  1. <object>

【4】无子元素

  1. <hr><br><wbr><img><embed><param><source><track><area><col><keygen>

  【4.1】子元素可以没有、可以是<li>元素,也可以是<script>、<template>元素

  1. <ol><ul>

  【4.2】子元素可以没有、可以是<dt>和<dd>元素,也可以是<script>、<template>元素

  1. <dl>

  【4.3】子元素可以没有,可以是<option>、<optgroup>,也可以是<script>、<template>元素

  1. <select>

  【4.4】子元素可以没有,可以是<option>,也可以是<script>、<template>元素

  1. <optgroup>

  【4.5】子元素可以没有、可以是<option>元素

  1. <datalist>

  【4.6】子元素可以没有、也可以是<track>元素,也可以是<source>元素

  1. <audio><video>

  【4.7】子元素可以没有,也可以是<col>、<template>元素

  1. <colgroup>

  【4.8】子元素可以没有,可以是<tr>,也可以是<script>、<template>元素

  1. <tbody><thead><tfoot>

  【4.9】子元素可以没有,可以是<tr>、<th>,也可以是<script>、<template>元素

  1. <tr>

【5】子元素是<caption>、<colgroup>、<thead>、<tfoot>、<tbody>,也可以是<script>、<template>元素

  1. <table>

【6】子元素是文本内容

  1. <textarea>

  【6.1】子元素可以没有,也可以是文本内容

  1. <option>

总结

  关于每个元素的详细嵌套规则,上部分已经详细介绍。这部分主要对常用标签的嵌套规则进行总结

  [注意]将鼠标移动到深灰色背景的文字上,title将显示该元素所包含的标签

【1】<h1>、<h2>、<h3>、<h4>、<h5>、<h6>、<p>的子元素是语句型元素

【2】<header>、<footer>不可嵌套<header>、<footer>

【3】<a>的子元素是transparent(以它的父元素允许的子元素为准),但不包括交互型元素(interactive content)

【4】<form>不可嵌套<form>

【5】<button>子元素是语句型元素,不可嵌套交互型元素(interactive content)

【6】<caption>不可嵌套<table>

【7】<dt>、<th>不可嵌套<header>、<footer>、区块型元素(sectioning content)、标题型元素(heading content)

HTML5标签嵌套规则的更多相关文章

  1. web@HTML常用标签分类,标签嵌套规则

    一.html标签又叫做html元素,它分为块级元素和内联元素(也可以叫做行内元素),都是html规范中的概念.1.块级元素块级元素是指本身属性为display:block;的元素.因为它自身的特点,我 ...

  2. 前端 HTML 标签嵌套规则

    标签嵌套规则 块元素可以包含内联元素或某些块元素,但内联元素却不能包含块元素,它只能包含其它的内联元素,例如: <div><div></div><h1> ...

  3. HTML标签嵌套规则

    摘要:  最近在整理项目时发现有些同事写的页面代码嵌套的太多,而且有些嵌套不对,比如<a><div>内容</div></a>.虽然功能实现了,但是对于浏 ...

  4. 项目期复习总结2:Table, DIV+CSS,标签嵌套规则

    文件夹: 1.表格的意义,含义? 2.表格有哪些元素? 3.表格布局,表格布局的优缺点 4.行元素,块元素的差别? 5.标签的合理嵌套及标签的语义性 ① 表格的意义,含义? 表格应该用来展现那些适合表 ...

  5. 从零开始学习前端开发 — 9、标签嵌套规则及CSS常用样式覆盖

    1. 块级元素可以包含内联元素或某些块级元素,但内联元素却不能包含块级元素,它只能包含其它的内联元素: <div><h1></h1><p></p& ...

  6. 第153天:关于HTML标签嵌套的问题详解

    HTML标签 1.块级元素 div.h1~h6.address.blockquote.center.dir.dl.dt.dd.fieldset.form.hr.isindex.menu.noframe ...

  7. 一天搞定HTML----标签的嵌套规则06

    标签的嵌套规则 代码演示 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  8. 关于p标签不能嵌套div标签引发的标签嵌套问题总结

    问题由来:<p>中嵌套<div>标签,两个都是块级元素,按理应该可以正常显示,但是最后的结果居然是多出来一段<p>的效果,所以就在网上找了许多关于标签嵌套规则的资料 ...

  9. XHTML标签的嵌套规则分析

    在 XHTML 的语言里,我们都知道:ul 标签包含着 li.dl 标签包含着 dt 和 dd——这些固定标签的嵌套规则十分明确.但是,还有许多标签是独立的,它们没有被捆绑在一起,比如 h1.div. ...

随机推荐

  1. vim指令常用

    慢慢尝试使用vim,不断学习使用新的快捷键,将常用快捷键但经常容易忘的写下来, 1. 复制黏贴 命令行模式下按住v选中,y表示复制,d表示剪切,p为复制.

  2. Activity劫持实例与防护手段

    原文地址:Activity劫持实例与防护手段 作者:cjxqhhh (本文只用于学习技术,提高大家警觉,切勿用于非法用途!)   什么叫Activity劫持   这里举一个例子.用户打开安卓手机上的某 ...

  3. PYTHON学习之路_PYTHON基础(4)

    学习内容: 1.Python函数的基本语法 2.Python函数的返回值与变量 3.Python嵌套函数 4.Python递归函数及实例(二分查找) 5.Python匿名函数 6.Python内置方法 ...

  4. 如何安装win10+Red Hat Enterprise Linux双系统?

    1,如何安装win10+Red Hat Enterprise Linux双系统???? 有很多人(没做过调查,可能就我自己想装吧)想要安装Red Hat Enterprise Linux系统,但是又不 ...

  5. Windows 10开机的秘密在哪里

    如何查看开机速度 查看开机速度,一定要安装所谓的第三方安全软件么?老子就是不喜欢被安全! Windows自带的事件查看器中记录了系统的一举一动,何必需要别人来监视? 在运行(WinKey+R)中输入e ...

  6. java.lang.RuntimeException: Method setUp in android.test.ApplicationTestCase not mocked. See http://g.co/androidstudio/not-mocked for details.

    解决: build.gradle里加入: android { testOptions { unitTests.returnDefaultValues = true } }

  7. 快速排序-java

    排序-快速排序 基本思想: 将数据划分为两部分,左边的所有元素都小于右边的所有元素:然后,对左右两边进行快速排序. 划分方法: 选定一个参考点(中间元素),所有元素与之相比较,小的放左边,大的放右边. ...

  8. 对bit、byte、TByte、Char、string、进制的认识

    在学校老师就教1byte = 8bit,一个Byte在内存中占8个房间.每个房间都有门牌号.找到内存中的内容就找门牌号,寻址什么的,虽然在听,但是脑袋里一头雾水,到现在只知道会用就行,但原理也不是那么 ...

  9. PAT/字符串处理习题集(一)

    B1006. 换个格式输出整数 (15) Description: 让我们用字母B来表示"百".字母S表示"十",用"12...n"来表示个 ...

  10. angularjs http 请求拦截器

    /** * Created by oy on 2016/11/29. */ (function() { 'use strict'; // 创建angular模块 angular .module('ap ...