以下格式中,空的class
属性是否为有效的HTML?
<p class="">something</p>
<p class>something</p>
我发现了这个问题,它类似于所提出的问题,但是具体询问的是自定义数据属性是否有效。
以下格式中,空的class
属性是否为有效的HTML?
<p class="">something</p>
<p class>something</p>
我发现了这个问题,它类似于所提出的问题,但是具体询问的是自定义数据属性是否有效。
在查看其他答案提及的规范之后,我找到了实际回答问题的部分。
<p class>
不被允许使用属性规范上的3.2.3.1节关于空属性语法的说明如下:
空属性是指省略了值的属性。这是指定带有空值的属性的一种语法简写,通常用于布尔属性。这种语法可以在HTML语法中使用,但不能在XHTML语法中使用。
(...)
此语法仅允许用于布尔属性。
鉴于class属性的描述(显然)没有提到它是布尔属性,因此不允许省略该值。
<p class="">
是允许使用的从关于class的部分,我们可以得知:
每个HTML元素都可以指定一个class属性。
如果指定了该属性,则必须将其值设置为一组以空格分隔的标记,表示该元素所属的各种类别。
而从以空格分隔的标记的定义中:
一组以空格分隔的标记是一个包含零个或多个单词(称为标记)的字符串,这些单词由一个或多个空格字符分隔,其中单词由任何一个或多个字符的字符串组成,其中没有空格字符。
我们可以得出结论,属性值实际上可以为空(即包含零个标记)。
从HTML5参考页面,第3.2.3节属性:
元素可以具有用于指定有关它们的其他信息的属性。某些属性在全局范围内定义,并可用于任何HTML元素,而其他属性仅为特定元素定义。每个属性必须具有用于标识其的属性名称。每个属性还具有相关联的属性值,具体取决于属性的定义,可能代表几种不同类型之一。每个属性的允许语法取决于给定值。
因此,回答您的问题:
无效:
<p class>
有效(空值)
<p class="">
<p class>
是无效的结论。然而,肯定有一些属性不需要显式值 (<input disabled>
),那么你是如何得出这个结论的呢?我是否漏掉了什么?你引用的部分没有涵盖布尔属性吗? - Thorkil Holm-Jacobsen没有任何值不会使其无效。我已经在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/multipage/common-microsyntaxes.html#boolean-attributes
阅读关于布尔属性讨论的问答 - HTML 5中的布尔属性是什么意思?
Class属性应该包含一个值。如果没有值,它就不是有效的属性。但在渲染时不会显示任何影响。