Erlaubt HTML5 nicht leere selbstschließende Tags?
P粉680487967
P粉680487967 2023-08-21 18:20:11
0
2
614
<p>Der W3C-Validator (Wikipedia) mag die Verwendung von selbstschließenden Tags (Tags, die auf „<code>/></code>“ enden) für nicht leere Elemente nicht. (Leere Elemente sind solche, die niemals Inhalte enthalten.) Sind sie in HTML5 noch gültig? </p> <p>Einige Beispiele für akzeptierte leere Elemente: </p> <pre class="brush:html;toolbar:false;"><br /> <img src="" /> <input type="text" name="username" /> </pre> <p>Einige Beispiele für abgelehnte nicht leere Elemente: </p> <pre class="brush:html;toolbar:false;"><div id="myDiv" /> <span id="mySpan" /> <textarea id="someTextMessage" /> </pre> <sub> <b>Hinweis: </b> <p><br /></p><p> Der W3C-Validator akzeptiert tatsächlich leere selbstschließende Tags: Der Autor stieß ursprünglich auf das Problem aufgrund eines einfachen Tippfehlers (Verwendung von <code>></code> anstelle von <code>/></code> ;). ; Allerdings sind selbstschließende Tags in HTML5 nicht vollständig gültig, und die Antwort geht näher auf das Problem selbstschließender Tags in verschiedenen HTML-Versionen ein. </p></sub>
P粉680487967
P粉680487967

Antworte allen(2)
P粉762730205

自闭合的div将无法验证。这是因为div是一个普通元素,而不是一个空元素

根据HTML5规范,不能包含任何内容的标签(称为空元素)可以自闭合*。这包括以下标签:

area, base, br, col, embed, hr, img, input, 
link, meta, param, source, track, wbr

上述标签上的“/”是完全可选的,因此<img/><img>没有区别,但<img></img>是无效的。

*注意:外部元素也可以自闭合,但我认为这不在本答案的范围内。

P粉113938880
  • 在理论上,HTML 4中,<foo /(是的,没有任何>)的意思是<foo>(这导致<br />的意思是<br>>(即<br>&gt;)和<title/hello/的意思是<title>hello</title>)。我使用术语“理论上”是因为这是一个SGML规则,浏览器对其支持得非常差。支持非常少(我只在emacs-w3m中看到过它起作用),以至于规范建议作者避免使用这种语法

  • XHTML中,<foo />的意思是<foo></foo>。这是适用于所有XML文档的XML规则。也就是说,XHTML通常以text/html的形式提供,这(至少在历史上)由浏览器使用与以application/xhtml+xml提供的文档不同的解析器处理。W3C提供了关于XHTML作为text/html兼容性指南。(基本上:只有在元素被定义为EMPTY(并且在HTML规范中禁止了结束标签)时,才使用自闭合标签语法)。

  • HTML5中,<foo />的含义取决于元素的类型

    • 对于被指定为空元素(基本上是“在HTML5之前存在的元素,被禁止包含任何内容”),结束标签是被禁止的。在开始标签的末尾加上斜杠是允许的,但没有意义。这只是对于习惯于XML的人(和语法高亮器)的语法糖。
    • 对于其他HTML元素,斜杠是一个错误,但错误恢复将导致浏览器忽略它并将标签视为常规的开始标签。这通常会导致缺少结束标签,从而使后续元素成为子元素而不是兄弟元素。
    • 外部元素(从SVG等XML应用程序导入)将其视为自闭合语法。
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage