【发布时间】:2015-06-10 06:39:32
【问题描述】:
是一个空的class属性有效的HTML格式如下:
<p class="">something</p>
<p class>something</p>
我发现this question 类似,但专门询问自定义数据属性。
【问题讨论】:
-
@200_success:谢谢。您为我指明了正确的方向,我设法在规范中找到了答案。
标签: html
是一个空的class属性有效的HTML格式如下:
<p class="">something</p>
<p class>something</p>
我发现this question 类似,但专门询问自定义数据属性。
【问题讨论】:
标签: html
在查看其他答案中提到的规范后,我找到了确实回答所提出问题的部分。
<p class> 不允许空属性语法上的specification on attributes 3.2.3.1 节规定如下:
空属性是一个值被省略的属性。这是用空值指定属性的语法简写,通常用于布尔属性。这种语法可以用在 HTML 语法中,但不能用在 XHTML 语法中。
(...)
这种语法只允许用于布尔属性。
看到description of the class attribute(显然)没有提到它是布尔属性,因此不允许省略该值。
<p class=""> 是允许的从the section on class 我们了解到:
每个 HTML 元素都可以指定一个类属性。
该属性(如果指定)必须具有一个值,该值是一组以空格分隔的标记,表示该元素所属的各种类。
一组以空格分隔的标记是包含零个或多个单词(称为标记)由一个或多个空格字符分隔的字符串,其中单词由一个或多个字符的任何字符串组成,其中没有一个是空格字符。
我们可以得出结论,属性值实际上可以为空(即包含零个标记)。
【讨论】:
来自 HTML5 参考页面,第 3.2.3 节属性:
元素可能具有用于指定有关它们的附加信息的属性。一些属性是全局定义的,可以在任何 HTML 元素上使用,而其他属性仅用于特定元素。每个属性都必须有一个用于标识它的属性名称。每个属性也有一个关联的属性值,根据属性的定义,它可能代表几种不同类型中的一种。每个属性的允许语法取决于给定的值。
所以回答你的问题,
无效:
<p class>
有效(空值)
<p class="">
请参阅http://dev.w3.org/html5/html-author/,了解您需要的有关 HTML5 的所有参考资料。
【讨论】:
<p class> 无效。但是,肯定有些属性不需要显式值(<input disabled>),那么您如何得出这个结论呢?我在这里缺少什么吗?您引用的部分是否未涵盖布尔属性?
没有任何值不会使其无效。我在http://validator.w3.org/#validate_by_input中测试过
把这段代码放在那里并测试:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div class>Validiity
<input type="text" disabled>
</div>
</body>
</html>
没有引号,只为布尔属性起草属性名称,如disabled、required
许多属性是布尔属性。元素上存在布尔属性表示真值,不存在该属性表示假值。
更多:https://html.spec.whatwg.org/#boolean-attributes
阅读关于布尔属性讨论的 Q/A - What does it mean in HTML 5 when an attribute is a boolean attribute?
【讨论】:
Class 属性应该包含一个值。没有价值,它不是一个有效的。但它在渲染时没有任何影响。
【讨论】: