XHTML的设计者认为,应当让HTML页面严格符合XML,使得HTML真正成为XML的一个子集,从而提倡了和XML一致的自闭合标签。
不得不说XHTML在促进程序员规范语义上,起到了巨大的历史作用。
但在结果上,实际写出的XHTML页面没有几个真的送进XML解析器不报错的。
所以到了现在HTML5时代,对XML的执着终究被废弃了,XHTML当初的设计目标被Web标准的设计者自己挖个坑给埋了。
现在的原则是:只要标签没有二义性,就不要求闭合,对于标准中所说的void elements就可以忽略。
非自闭合标签必须有开始标签和结束标签,而自闭合标签没有闭合标签。在w3c不同的规范中,对标签的闭合检查也是不一样的。
XHTML最为严格,必须在自闭合标签中添加"/"。在HTML4.01中,不推荐在自闭合标签中添加“/”。而HTML5最宽松,填不添加都符合规范。
HTML中所有的自闭合标签如下:area、base、br、col、command、embed、hr、img、input、keygen、link、meta、param、source、track、wbr
如:
错误的语法:
<a href="xxx" title="demo" />
<img src="xxx" alt="demo"></img>
HTML5标准允许不闭合标签:<div>
<p>This is a text
<div>
<p>This is another text
那些自闭合的标签在HTML5之前就可以不闭合了,但是之前w3c会发警告:
<br>
<hr>
<input type="text">
<img src="pic.png">
之前听说HTML5标准推荐不闭合,但是我现在写起来不闭合心里还是不爽,自闭合标签后我都要加上斜线才舒服。