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

时间:2010-03-16 00:25:09

标签: css css-selectors

我不确定这是否可行,但是当你想根据应用它的类的组合来设置元素样式时,是否有一种语法用于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; }

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

类似的东西:

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

谢谢!

修改

感谢所有答案。这几乎就是我的想法(只是将类视为常规选择器),但它们似乎并不适合我。我将不得不检查我的代码,并确保它们没有被覆盖......

4 个答案:

答案 0 :(得分:68)

$('.bold_green.bold_blue').addClass('something-else');

或者在CSS中:

.bold_green.bold_blue { color: pink; }

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

答案 1 :(得分:6)

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

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

答案 2 :(得分:3)

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

对于“HAS CHILD”案例,您可以使用:

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

将为bold_blue元素中的任何bold_green元素设置样式。

或者如果你想要一个DIRECT孩子:

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

仅对具有直接父bold_blue的{​​{1}}元素进行样式设置。

答案 3 :(得分:1)

在visual studio 2013中,CSS设置由"逗号"应用于多个类。如下:

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