2009-04-30 7 views
22

Necesito diseñar un elemento que tenga tanto la clase "a" como la clase "b". ¿Cómo lo hago?Estilo CSS para un elemento que tiene clase A y clase B

El orden en que aparecen las clases en el html puede variar.

<style> 
div.a ? div.b{ 
color:#f00; 
} 
</style> 
<div class="a">text not red</div> 
<div class="b">text not red</div> 
<div class="a b">red text</div> 
<div class="b a">red text</div> 

Respuesta

49

Eso es totalmente posible. Si especifica dos clases en un elemento (sin espacios), eso significa que debe tener ambas para que se aplique la regla.

div.a { 
 
    color: blue; 
 
} 
 
div.b { 
 
    color: green; 
 
} 
 
div.a.b { 
 
    color: red; 
 
}
<div class="a"> 
 
    A 
 
</div> 
 
<div class="b"> 
 
    B 
 
</div> 
 
<div class="a b"> 
 
    AB 
 
</div>

+6

+1 con una nota que no es compatible con IE6 –

+0

lol @VanGale esto era una buena ... pero es una vieja pregunta ... – jycr753

+0

¿Esto es compatible con IE9? Estoy teniendo problemas donde los elementos con solo una de las clases están aprendiendo el estilo. Este es el tipo de documento que estoy usando ... Dib

-2

Sí, utilizar una clase común, o por qué no, JavaScript si el contenido cambia dinámicamente

9

selectores de clase se pueden combinar:

div.a.b { 
    color: red; 
} 

Citando de the spec:

para que coincida con un subconjunto de valores "clase", cada valor debe ser precedido por un "."

Por ejemplo, la siguiente regla coincide con cualquier elemento P cuyo atributo "class" se le ha asignado una lista de valores separados por espacios que incluye "pastoral" y "marino":

p.marine.pastoral { color: green } 

Esta regla partidos cuando class="pastoral blue aqua marine" pero no coincide con class="pastoral blue".

4
div[class~="a"][class~="b"]{ 
color:#f00; 
} 
+1

Me encanta esto, pero vale la pena mencionar que el soporte del navegador heredado es bastante bajo. –

0

/* seleccione la etiqueta div con la clase A y B juntos */

<style> 
    div.a.b 
    { 
     color:#f00; 
    } 
    </style> 
    <div class="a">text not red</div> 
    <div class="b">text not red</div> 
    <div class="a b">red text</div> 
    <div class="b a">red text</div> 
Cuestiones relacionadas