我們知道,在HTML語言中,HTML元素是HTML文檔的基本組成單元。在HTML語法中,大多數(shù)元素包含一個(gè)開始標(biāo)簽、一個(gè)結(jié)束標(biāo)簽,以及標(biāo)簽中的內(nèi)容,類似于:<xxx>內(nèi)容</xxx>。
但是在HTML 5中,有一些元素的標(biāo)簽是可以省略的,下面本文就對(duì)這些元素做一個(gè)大致的介紹。
<html>元素
如果<html>元素中的第一個(gè)內(nèi)容不是注釋,則可以省略起始標(biāo)簽。 如果<html>元素后面沒有緊接一個(gè)注釋,則可以省略結(jié)束標(biāo)簽。<head>元素
如果<head>元素為空,或者<head>元素中的第一個(gè)內(nèi)容是一個(gè)HTML元素,則可以省略起始標(biāo)簽。 如果<head>元素后不緊跟空格字符或注釋,則可以省略結(jié)束標(biāo)簽。<base>元素
沒有結(jié)束標(biāo)簽。<link>元素
沒有結(jié)束標(biāo)簽。<meta>元素
沒有結(jié)束標(biāo)簽。<body>元素
如果<body>元素為空,或者<body>元素中第一個(gè)內(nèi)容不是空格或注釋,則起始標(biāo)簽可以省略,除非<body>元素中第一個(gè)內(nèi)容是一個(gè)<meta>,<link>,<script>,<style>或者<template>元素。如果<body>元素后面不是緊跟一個(gè)注釋,則結(jié)束標(biāo)簽可以省略。<p>元素
如果一個(gè)<p>元素后面緊跟一個(gè)<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>元素,或者在父元素中沒有更多內(nèi)容,且該父元素不是一個(gè)<a>,<audio>,<del>,<ins>,<map>,<nonscript>或<video>元素,則結(jié)束標(biāo)簽可以省略。<hr>元素
沒有結(jié)束標(biāo)簽。<li>元素
如果一個(gè)<li>元素之后緊跟另一個(gè)<li>元素,或在父元素中沒有其他更多內(nèi)容,則結(jié)束標(biāo)簽可以省略。<dt>元素
如果一個(gè)<dt>元素后面緊跟另一個(gè)<dt>元素或<dd>元素,則結(jié)束標(biāo)簽可以省略。<dd>元素
如果一個(gè)<dd>元素后面緊跟另一個(gè)<dd>元素或<dt>元素,或者父元素中沒有更多其他內(nèi)容,則結(jié)束標(biāo)簽可以省略。<rb>元素
如果一個(gè)<rb>元素后面緊跟一個(gè)<rb>,<rt>,<rtc>或<rp>元素,或者父元素中沒有更多其他內(nèi)容,則結(jié)束標(biāo)簽可以省略。<rt>元素
如果一個(gè)<rt>元素后面緊跟一個(gè)<rb>,<rt>,<rtc>或<rp>元素,或者父元素中沒有更多其他內(nèi)容,則結(jié)束標(biāo)簽可以省略。<rtc>元素
如果一個(gè)<rtc>元素后面緊跟一個(gè)<rb>或<rtc>元素,或者父元素中沒有更多其他內(nèi)容,則結(jié)束標(biāo)簽可以省略。<rp>元素The rp element
如果一個(gè)<rp>元素后面緊跟一個(gè)<rb>,<rt>,<rtc>或<rp>元素,或者父元素中沒有更多其他內(nèi)容,則結(jié)束標(biāo)簽可以省略。<br>元素
沒有結(jié)束標(biāo)簽。<wbr>元素
沒有結(jié)束標(biāo)簽。與
<picture>元素一起使用的<source>元素。
沒有結(jié)束標(biāo)簽。<img>元素
沒有結(jié)束標(biāo)簽。<embed>元素
沒有結(jié)束標(biāo)簽。<param>元素
沒有結(jié)束標(biāo)簽。<source>元素
沒有結(jié)束標(biāo)簽。<track>元素
沒有結(jié)束標(biāo)簽。<area>元素
沒有結(jié)束標(biāo)簽。<colgroup>元素
如果一個(gè)<colgroup>元素之后不是緊跟一個(gè)空格或注釋,則結(jié)束標(biāo)簽可以省略。<col>元素
沒有結(jié)束標(biāo)簽。<tbody>元素
如果一個(gè)<tbody>元素中的第一個(gè)內(nèi)容是一個(gè)<tr>元素,且這個(gè)<tbody>元素之后不是緊跟在一個(gè)已省略結(jié)束標(biāo)簽的<tbody>,<thead>,<tfoot>元素之后,則<tbody>元素的起始標(biāo)簽可以省略(如果這個(gè)<tbody>元素是空的,則不可以省略)。如果一個(gè)<tbody>元素之后緊跟一個(gè)<tbody>元素或者<tfoot>元素,且父元素中沒有更多其他元素,則結(jié)束標(biāo)簽可以省略。<thead>元素
如果一個(gè)<thead>元素之后緊跟一個(gè)<tbody>或<tfoot>元素,則結(jié)束標(biāo)簽可以省略。<tfoot>元素
如果一個(gè)<tfoot>元素之后緊跟一個(gè)<tbody>元素,或者父元素中沒有更多其他元素,則結(jié)束標(biāo)簽可以省略。<tr>元素
如果一個(gè)<tr>元素之后緊跟另一個(gè)<tr>元素,或者父元素中沒有更多其他元素,則結(jié)束標(biāo)簽可以省略。<td>元素
如果一個(gè)<td>元素之后緊跟另一個(gè)<td>或<th>元素,或者父元素中沒有更多其他元素,則結(jié)束標(biāo)簽可以省略。<th>元素
如果一個(gè)<th>元素之后緊跟另一個(gè)<td>或<th>元素,或者父元素中沒有更多其他元素,則結(jié)束標(biāo)簽可以省略。<colgroup>元素
如果一個(gè)<colgroup>元素之后沒有緊跟一個(gè)空格或注釋,則結(jié)束標(biāo)簽可以省略。<col>元素
沒有結(jié)束標(biāo)簽。<input>元素
沒有結(jié)束標(biāo)簽。<optgroup>元素
如果一個(gè)<optgroup>元素之后緊跟另一個(gè)<optgroup>元素,或在父元素中沒有更多內(nèi)容,則結(jié)束標(biāo)簽可以省略。<option>元素
如果一個(gè)<option>元素之后緊跟另一個(gè)<option>元素,或者緊跟一個(gè)<optgroup>元素,或者在父元素中沒有更多的內(nèi)容,則結(jié)束標(biāo)簽可以省略。<keygen>元素
沒有結(jié)束標(biāo)簽。<menuitem>元素
沒有結(jié)束標(biāo)簽。
以上介紹的這39種元素,或是無條件省略結(jié)束標(biāo)簽,或是滿足某一條件下可省略開始或結(jié)束標(biāo)簽,其省略的原則皆為不會(huì)造成文檔的歧義。在實(shí)際應(yīng)用中,需要多加練習(xí)才能熟練掌握,對(duì)于入門者,在無法確定某個(gè)元素的標(biāo)簽是否可以省略的情況下,還是建議寫全,以免一旦出現(xiàn)錯(cuò)誤,在標(biāo)簽眾多的情況下排查起來比較困難。