提问人:Eli 提问时间:3/16/2010 最后编辑:Eli 更新时间:5/9/2016 访问量:42921
CSS:应用于类组合的样式?
CSS: Style applied to a combination of classes?
问:
我不确定这是否可能,但是当您想根据应用于元素的类组合设置元素样式时,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; }
谢谢!
编辑
感谢您的所有回答。这些几乎是我的想法(只是将类视为常规选择器),但它们似乎对我不起作用。我将不得不检查我的代码并确保它们不会以某种方式被覆盖......
答:
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
对于“有孩子”的情况,您将使用:
.bold_green .bold_blue { ... } /* note the ' ' (called the descendant selector) */
这将设置元素内任何元素的样式。bold_blue
bold_green
或者,如果您想要一个直系孩子:
.bold_green > .bold_blue { ... } /* this child selector does not work in IE6 */
这将仅设置具有直接父级的元素的样式。bold_blue
bold_green
1赞
Mehdi
5/9/2016
#4
在 Visual Studio 2013 中,CSS 设置通过“逗号”应用于多个类,如下所示:
.bold_green, .bold_blue { color:pink; font-style:italic; }
评论
color: blue
bold_blue
bold_green