2.1.3 HTML 5确保了与之前HTML版本的兼容性
HTML 5的语法是为了保证与之前的HTML语法达到最大程度的兼容而设计的。例如,符合"没有<p>的结束标记"的HTML代码随处可见,HTML 5中并没有把这种情况作为错误来处理,而是允许存在这种情况,但明确地规定了这种情况应该怎么处理。
那么,针对这个问题,让我们从元素标记的省略、具有boolean值的属性、引号的省略这几方面来详细看一下在HTML 5中是如何确保与之前版本的HTML达到兼容的。
1. 可以省略标记的元素
在HTML 5中,元素的标记可以省略。具体来说,元素的标记分为"不允许写结束标记"、"可以省略结束标记"和"开始标记和结束标记全部可以省略"三种类型。让我们来针对这三类情况列举一个元素清单,其中包括HTML 5中的新元素(关于这些新元素,2.2节将进行介绍)。
不允许写结束标记的元素有:area、base、br、col、command、embed、hr、img、input、keygen、link、meta、param、source、track、wbr.
可以省略结束标记的元素有:li、dt、dd、p、rt、rp、optgroup、option、colgroup、thead、tbody、tfoot、tr、td、th.
可以省略全部标记的元素有:html、head、body、colgroup、tbody.
说明:"不允许写结束标记的元素"是指,不允许使用开始标记与结束标记将元素括起来的
形式,只允许使用"<元素/>"的形式进行书写。例如"<br>…</br>"的书写方式是错误的,正确的书写方式为"<br/>".当然,HTML 5之前的版本中<br>这种写法可以被沿用。
"可以省略全部标记的元素"是指,该元素可以完全被省略。请注意,即使标记被省略了,该元素还是以隐式的方式存在的。例如将body元素省略不写时,但它在文档结构中还是存在的,可以使用document.body进行访问。
2. 具有boolean值的属性
对于具有boolean值的属性,例如disabled与readonly等,当只写属性而不指定属性值时,表示属性值为true;如果想要将属性值设为false,可以不使用该属性。另外,要想将属性值设定为true时,也可以将属性名设定为属性值,或将空字符串设定为属性值。
属性值的设定方法可以参考下面的代码示例:
<!--只写属性不写属性值代表属性为true-->
<input type="checkbox" checked>
<!--不写属性代表属性为false-->
<input type="checkbox">
<!--属性值=属性名,代表属性为true-->
<input type="checkbox" checked="checked">
<!--属性值=空字符串,代表属性为true-->
<input type="checkbox" checked="">
3. 省略引号
大家已经知道,指定属性值的时候,属性值两边既可以用双引号,也可以用单引号。
HTML 5在此基础上做了一些改进,当属性值不包括空字符串、"<"、">"、"="、单引号、双引号等字符时,属性值两边的引号可以省略。如下面的代码所示:
<!-- 请注意type的属性值两边的引号 -->
<input type="text">
<input type='text'>
<input type=text>