使用CSS来定位任何包含任何两个类的元素?

Sim*_*lGy 6 css css-selectors css3

我们的生产环境使用的是与多个css类不兼容的自适应技术.这意味着在设置HTML样式时很容易忘记和使用两个类,并且一旦生成就让它中断.

我想使用CSS作为一种方式来突出显示有人忘记并意外地将两个类应用于元素.

这样的事情是我的意图,虽然当然这是无效的.它应该突出显示应用了两个类的任何元素:

.*.* { /* not valid (I wish) */
  outline:2px dotted red;
  }
Run Code Online (Sandbox Code Playgroud)

我知道如果我知道这个类就行了,问题是我要标记任何两个类:

.classA.classB { /* not good enough */
  outline:2px dotted red;
  }
Run Code Online (Sandbox Code Playgroud)

我知道我可以用JS和书签来做到这一点,也许这是唯一的解决方案.如果只有CSS可能会更好,因为它会自动为所有开发人员和QA标记内容.

Sim*_*lGy 6

我刚刚找到一个可接受的答案:

[class*=" "] {
  outline:2px dotted red;
  }
Run Code Online (Sandbox Code Playgroud)

这会突出显示class属性中包含空格的任何内容.它会产生一些误报,因为有时类属性中的空格会因为清晰的服务器端代码而合法地发生,但我更喜欢误报的误报.

有更好的想法吗?


Bol*_*ock 4

要删除大多数误报(例如空格填充的属性值),您可以使用此选择器:

[class*=" "]:not([class^=" "]):not([class$=" "]) {
    outline: 2px dotted red;
}
Run Code Online (Sandbox Code Playgroud)

这仍然不会过滤掉值中重复的类,例如class="foo foo"Phrogz 在您自己的答案中指出的那样,但总比没有好,而且我认为这种情况比带有空白填充的类属性发生的可能性要小得多。