CSS:应用于类组合的样式?

CSS: Style applied to a combination of classes?

提问人:Eli 提问时间:3/16/2010 最后编辑:Eli 更新时间:5/9/2016 访问量:42921

问:

我不确定这是否可能,但是当您想根据应用于元素的类组合设置元素样式时,CSS 中是否有可以使用的语法?

我知道我可以使用jQuery或其他东西检查元素,并根据它拥有的类更改其样式,但是有没有一种纯粹的CSS方法可以做到这一点?

例如,如果我有一个粗体和绿色的类:

.bold_green { color:green; font-weight:bold; }

还有一个粗体和蓝色的类:

.bold_blue { color:blue; font-weight:bold. }

现在,假设我正在使用 jQuery 动态添加和删除类,并希望具有这两个类的任何元素都变成斜体粉红色。

像这样:

.bold_green AND .bold_blue { color:pink; font-style:italic; }

或者,如果我想设置具有类的元素的样式,并且是具有另一个类的另一个元素的后代?

像这样:

.bold_green HAS_CHILD .bold_blue { color:black; background-color:yellow; }

谢谢!

编辑

感谢您的所有回答。这些几乎是我的想法(只是将类视为常规选择器),但它们似乎对我不起作用。我将不得不检查我的代码并确保它们不会以某种方式被覆盖......

css css-selectors

评论

0赞 BalusC 3/16/2010
你不是想在课堂上使用吗?color: bluebold_blue
0赞 mpen 3/16/2010
顺便说一句,如果你有像这样的类,那么你的设计方式可能有问题。<插入语义>bold_green
8赞 Eli 3/17/2010
纨绔子弟。这是一个例子。

答:

83赞 Paul Alexander 3/16/2010 #1
$('.bold_green.bold_blue').addClass('something-else');

或者在 CSS 中:

.bold_green.bold_blue { color: pink; }

请注意,选择器之间没有空格。

评论

0赞 Richard JP Le Guen 3/16/2010
不过存在IE兼容性问题,不是吗?
4赞 Isley Aardvark 3/16/2010
是的,IE6 会将 css 读取为.bold_blue { color: pink; }。您应该使用 Paul 提供的 jQuery 的变体,因为 jQuery 可以正确选择它,并使用适当的 css 添加一个新类: .something-else { color: pink;我也希望这些不是真正的类名。
1赞 Miriam Suzanne 3/16/2010
理想情况下,您首先按照此处的建议添加 CSS,然后在 IE6 的条件注释中添加提到的 jQuery。
0赞 aaaidan 10/31/2012
Hrm,这里提到......w3.org/TR/CSS2/selector.html#class-html......“要匹配”类“值的子集,每个值前面必须有一个”.”。
6赞 Esteban Küber 3/16/2010 #2

你不需要任何特别的东西,只需要

.bold_green.bold_blue { color:pink; font-style:italic; }
5赞 Joel 3/16/2010 #3

PaulVoyager 对于多类情况是正确的。

对于“有孩子”的情况,您将使用:

.bold_green .bold_blue { ... } /* note the ' ' (called the descendant selector) */

这将设置元素内任何元素的样式。bold_bluebold_green

或者,如果您想要一个直系孩子:

.bold_green > .bold_blue { ... } /* this child selector does not work in IE6 */

这将仅设置具有直接父级的元素的样式。bold_bluebold_green

1赞 Mehdi 5/9/2016 #4

在 Visual Studio 2013 中,CSS 设置通过“逗号”应用于多个类,如下所示:

.bold_green, .bold_blue { color:pink; font-style:italic; }