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

时间:2011-07-27 16:04:15

标签: css css3 css-selectors

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

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

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

.*.* { /* not valid (I wish) */
  outline:2px dotted red;
  }

据我所知,如果我知道这些课程就行了,问题是我想要标记任何两个类:

.classA.classB { /* not good enough */
  outline:2px dotted red;
  }

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

3 个答案:

答案 0 :(得分:6)

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

[class*=" "] {
  outline:2px dotted red;
  }

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

有更好的想法吗?

答案 1 :(得分:4)

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

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

这仍然没有过滤掉Phrogz在你自己的答案中指出的class="foo foo"等值中的重复类,但它总比没有好,而且我觉得这样做要少得多可能比具有空格填充的类属性发生。

答案 2 :(得分:1)

单独使用CSS是不可能的。

而且,如果我这样说,你的生产环境很愚蠢。没有多个类的CSS就像一个标签云,每个项目只允许一个标签。它打败了一些目的。修复您的生产环境,不要以这种方式滥用CSS,而不是限制您的作者正确地,语义地描述内容。