我们知道,在HTML语言中,HTML元素是HTML文档的基本组成单元。在HTML语法中,大多数元素包含一个开始标签、一个结束标签,以及标签中的内容,类似于:<xxx>内容</xxx>
。
但是在HTML 5中,有一些元素的标签是可以省略的,下面本文就对这些元素做一个大致的介绍。
<html>
元素
如果<html>
元素中的第一个内容不是注释,则可以省略起始标签。 如果<html>
元素后面没有紧接一个注释,则可以省略结束标签。<head>
元素
如果<head>
元素为空,或者<head>
元素中的第一个内容是一个HTML元素,则可以省略起始标签。 如果<head>
元素后不紧跟空格字符或注释,则可以省略结束标签。<base>
元素
没有结束标签。<link>
元素
没有结束标签。<meta>
元素
没有结束标签。<body>
元素
如果<body>
元素为空,或者<body>
元素中第一个内容不是空格或注释,则起始标签可以省略,除非<body>
元素中第一个内容是一个<meta>
,<link>
,<script>
,<style>
或者<template>
元素。如果<body>
元素后面不是紧跟一个注释,则结束标签可以省略。<p>
元素
如果一个<p>
元素后面紧跟一个<address>
,<article>
,<aside>
,<blockquote>
,<details>
,<div>
,<dl>
,<fieldset>
,<figcaption>
,<figure>
,<footer>
,<form>
,<h1>
,<h2>
,<h3>
,<h4>
,<h5>
,<h6>
,<header>
,<hr>
,<main>
,<menu>
,<nav>
,<ol>
,<p>
,<pre>
,<section>
,<table>
,<ul>
元素,或者在父元素中没有更多内容,且该父元素不是一个<a>
,<audio>
,<del>
,<ins>
,<map>
,<nonscript>
或<video>
元素,则结束标签可以省略。<hr>
元素
没有结束标签。<li>
元素
如果一个<li>
元素之后紧跟另一个<li>
元素,或在父元素中没有其他更多内容,则结束标签可以省略。<dt>
元素
如果一个<dt>
元素后面紧跟另一个<dt>
元素或<dd>
元素,则结束标签可以省略。<dd>
元素
如果一个<dd>
元素后面紧跟另一个<dd>
元素或<dt>
元素,或者父元素中没有更多其他内容,则结束标签可以省略。<rb>
元素
如果一个<rb>
元素后面紧跟一个<rb>
,<rt>
,<rtc>
或<rp>
元素,或者父元素中没有更多其他内容,则结束标签可以省略。<rt>
元素
如果一个<rt>
元素后面紧跟一个<rb>
,<rt>
,<rtc>
或<rp>元素,或者父元素中没有更多其他内容,则结束标签可以省略。<rtc>
元素
如果一个<rtc>
元素后面紧跟一个<rb>
或<rtc>
元素,或者父元素中没有更多其他内容,则结束标签可以省略。<rp>
元素The rp element
如果一个<rp>
元素后面紧跟一个<rb>
,<rt>
,<rtc>
或<rp>
元素,或者父元素中没有更多其他内容,则结束标签可以省略。<br>
元素
没有结束标签。<wbr>
元素
没有结束标签。与
<picture>
元素一起使用的<source>
元素。
没有结束标签。<img>
元素
没有结束标签。<embed>
元素
没有结束标签。<param>
元素
没有结束标签。<source>
元素
没有结束标签。<track>
元素
没有结束标签。<area>
元素
没有结束标签。<colgroup>
元素
如果一个<colgroup>
元素之后不是紧跟一个空格或注释,则结束标签可以省略。<col>
元素
没有结束标签。<tbody>
元素
如果一个<tbody>
元素中的第一个内容是一个<tr>
元素,且这个<tbody>
元素之后不是紧跟在一个已省略结束标签的<tbody>
,<thead>
,<tfoot>
元素之后,则<tbody>
元素的起始标签可以省略(如果这个<tbody>
元素是空的,则不可以省略)。如果一个<tbody>
元素之后紧跟一个<tbody>
元素或者<tfoot>
元素,且父元素中没有更多其他元素,则结束标签可以省略。<thead>
元素
如果一个<thead>
元素之后紧跟一个<tbody>
或<tfoot>
元素,则结束标签可以省略。<tfoot>
元素
如果一个<tfoot>
元素之后紧跟一个<tbody>
元素,或者父元素中没有更多其他元素,则结束标签可以省略。<tr>
元素
如果一个<tr>
元素之后紧跟另一个<tr>
元素,或者父元素中没有更多其他元素,则结束标签可以省略。<td>
元素
如果一个<td>
元素之后紧跟另一个<td>
或<th>
元素,或者父元素中没有更多其他元素,则结束标签可以省略。<th>
元素
如果一个<th>
元素之后紧跟另一个<td>
或<th>
元素,或者父元素中没有更多其他元素,则结束标签可以省略。<colgroup>
元素
如果一个<colgroup>
元素之后没有紧跟一个空格或注释,则结束标签可以省略。<col>
元素
没有结束标签。<input>
元素
没有结束标签。<optgroup>
元素
如果一个<optgroup>
元素之后紧跟另一个<optgroup>
元素,或在父元素中没有更多内容,则结束标签可以省略。<option>
元素
如果一个<option>
元素之后紧跟另一个<option>
元素,或者紧跟一个<optgroup>
元素,或者在父元素中没有更多的内容,则结束标签可以省略。<keygen>
元素
没有结束标签。<menuitem>
元素
没有结束标签。
以上介绍的这39种元素,或是无条件省略结束标签,或是满足某一条件下可省略开始或结束标签,其省略的原则皆为不会造成文档的歧义。在实际应用中,需要多加练习才能熟练掌握,对于入门者,在无法确定某个元素的标签是否可以省略的情况下,还是建议写全,以免一旦出现错误,在标签众多的情况下排查起来比较困难。