没有比这更简单的了:它现在和永远唯一地标识文档树中的元素吗?使用身份证。如果没有,请使用类名。
请记住,ID 和类是属于每个元素的属性,而不是一组元素的总称。用“标识符”来表示“识别一组元素”是徒劳的;这就是为什么您使用类名来将这些元素分类为以某种方式相关的原因。
如果您要“识别”作为特定小部件或模块成员的元素,您可以自由地为代表该小部件或模块的每个元素添加一个类名,并在元素的类之外选择它:
<div class="my-module foo">.my-module.foo</div>
<div class="my-module bar">.my-module.bar</div>
或者,如果特异性是一个非常大的问题,以至于您甚至无法将另一个类选择器堆叠到您的规则中,请在元素的类名称前加上该模块的名称并选择它。
<div class="my-module-foo">.my-module-foo</div>
<div class="my-module-bar">.my-module-bar</div>
如果这是问题所在,那么是的,这是完全合法的——正如我所提到的,这就是类名和选择器的全部意义所在。
但是,让类选择器“看起来像”一个 ID 选择器,但功能却不像一个选择器,这并没有合法的好处。另一方面,它确实造成了不必要的混乱,尤其是对于其他可能不太了解的作者。如果你想避免像瘟疫一样的 ID 选择器,没关系,别管它们;没有人强迫你使用它们。但是,如果您想唯一标识单个元素,那么您可能需要记住 CSS 已经提供了一个功能来补充id
HTML 中的属性,称为ID 选择器。无需修改选择器语法的其他部分来模拟您已经很容易使用并且从一开始就一直存在的其他功能。
顺便说一句,如果您遇到 CSS 规则的特殊性问题,那么需要重构的是您的 CSS 规则,而不是您的标记。修改你的标记来适应你的风格规则只会导致更多的麻烦,至少在我的经验中是这样。(鉴于以 HTML5 开头的标识符中允许使用哈希,我理解这样说具有讽刺意味。)