以下是两个html代码段:
<html>
<head>
<title>foo</title>
<style type="text/css"></style>
</head>
<body>
bar
</body>
</html>
<html>
<head>
<title>foo</title>
<style type="text/css"/>
</head>
<body>
bar
</body>
</html>
尝试在Firefox,Chrome或IE中渲染 - 两个代码段的呈现方式不同!但我认为两个版本的空元素是一样的? (样式元素)
答案 0 :(得分:1)
根据HTML规范,STYLE
元素需要结束标记。
<强> 14.2.3 Header style information: the STYLE element 强>
开始标记:必填,结束标记:必需
所以style
的自封闭版本不是正确的HTML文档部分。
答案 1 :(得分:1)
在XML中它是有效的,但你可以调用你的代码片段HTML,而不是。 - 例如在HTML5中(序列化为HTML,而不是XML),您还没有关闭样式元素(忽略斜杠)。
答案 2 :(得分:0)
当作为text / html提供时,它们使用HTML解析器进行解析,该解析器将<style type="text/css"/>
视为<style type="text/css">
的拼写错误(即,在关闭标记之前忽略斜杠)。这使得文档的其余部分成为style
元素的一部分,从而被忽略。 - 这就是为什么XHTML 1.0 appendix C建议“自动关闭”语法(又称“最小化语法”)仅用于具有EMPTY声明内容的元素的原因。
当作为具有XML内容类型的真正XHTML提供时,它们按照XML规则进行相同的处理。但是,在没有xmlns
属性的情况下,它们被视为没有样式的通用XML,因此实际上浏览器只是按原样显示XML代码。