CSS:class和id是否可以互换?

Bar*_*own 0 css class

我知道其他人已经询问过如何在CSS文件中使用class和id,比如

Div:Class vs Id

所以我知道class和id之间的语义和语法差异:id应该用于只使用一次的元素,而class应该用于共享属性的元素.

但这不是一个严格的规则,是吗?将id用于多个元素有什么危害?或者只使用一个班级?毕竟,不是"一个元素"只是一个集合(类)只有一个东西吗?

如果我违反规则,浏览器的CSS解释器会抛出错误吗?我没见过它.

那么为什么我们同时拥有id和class?为什么不只是一个或另一个并称之为好?

Ste*_*owe 11

不允许重复的ID; 虽然你的浏览器可能会或可能不关心,但这个概念毫无意义 - 如果有重复,它怎么能成为一个ID呢?;-)


And*_*are 5

如果你这样做,CSS不会抱怨,但如果你想通过它的id获取一个元素,Javascript肯定会.

真正的答案是,一个且仅一个对象的标识符与可应用于多个对象的标识符之间存在语义差异.虽然你可以违反规则,但最好不要这样做.

两者之间还有另外一个区别,(X)HTML元素允许像这样应用多个类:

<div class="foo bar"></div>
Run Code Online (Sandbox Code Playgroud)

你无法用ids做到这一点.