具有空格的HTML类属性,它是一个W3C有效的类?

关于将HTML (或类?)分配给标记的HTML 属性。 像使用空格一样

<tag class="ab">....</tag> 

已validation?

这种语法被一些网页devise者使用,并出现在Adobe InDesign的导出HTML中(用版本5和版本6testing),以及另外一个HTML生成软件。

它( class="ab" )是一个有效的W3C语法? 什么版本的CSS和HTML? (从哪个版本开始有效?)


编辑:一个自然的子问题 “W3C说如何解释它? (这是一个“覆盖”或另一种渲染行为?) 张贴在这里 。

这些是由空间分隔的两个不同的类别ab 。 请参阅w3c DOCS

class = cdata-list [CS]

这个属性为一个元素分配一个类名或一组类名。 任何数量的元素可以被分配相同的类名称或名称。 多个类名必须用空白字符分隔。


如果你有两个class

 .a { font-weight: bold; } .b { font-weight: normal; } 

并在class =“ab”class =“ba”中赋值,则后面的类将覆盖具有相同属性的前一类,所以字体权重将是正常的

如果您更改CSS定义顺序,

 .b { font-weight: normal; } .a { font-weight: bold; } 

现在后面的类是粗体的,所以“覆盖具有相同属性的前一类”结果字体粗体

这在IE 7及更高版本中得到支持,包括所有现代的非IE浏览器。 正如其他评论者所指出的那样,它实际上是一个类的列表,而不是一个具有空格的类。

了解这一点的更好的方法是给你的例子更多的select:

 <tag class="ab">....</tag> <tag class="a">....</tag> <tag class="b">....</tag> 

.ab {}在您的CSS将目标的第一个标签。
.a {}将定位第一个和第二个标签。
.b {}将定位第一个和第三个标签。

这就是为什么在一个元素上使用多个类可能会非常有用的原因。

对于CSSselect器和伪select器的问题,我喜欢使用这个(稍微过时的)表http://kimblim.dk/css-tests/selectors/

一个类名不能有空格。 一个元素可以有多个类,这些类通过列出由空格分隔的类名来定义

这不会在CSS文件或HTML中工作。 <div class="abc"></div>表示div元素具有类AND类b AND类c。

同时,在样式表的一面, .abc { property: value; } .abc { property: value; }是无效的,因为它的字面意思是“元素c的祖先b的祖先有a类”(和b和c显然是无效的HTML元素),而.a .b .c { property: value; } .a .b .c { property: value; }意思是“具有祖先元素的类别为c的元素具有具有类别a的祖先元素的类别b”。 如果这对你没有意义,查找CSS特殊性规则。

使用破折号或下划线而不是空格。