2010-03-16 11 views
29

No estoy seguro de que esto es posible, pero no es una sintaxis para ser usado en CSS cuando se desea el estilo de un elemento basado en la combinación de clases que se le aplica?CSS: ¿Estilo aplicado a una combinación de clases?

entiendo que puedo comprobar un elemento con jQuery o algo y cambiar su estilo basado en las clases que tiene, pero hay una manera CSS puro para hacer esto?

Por ejemplo, si tengo una clase para negrita y verde:

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

y una clase para negrita y azul:

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

Ahora, decir que estoy usando jQuery para añadir y eliminar Clasifica dinámicamente y quiere que cualquier elemento que tenga ambas clases se convierta en cursiva rosa.

Algo así como:

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

O, si quiero el estilo de un elemento que tiene AClass, y es un descendiente de otro elemento que tiene otra clase?

Algo así como:

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

Gracias!

Editar

Gracias por todas las respuestas. Estos son más o menos lo que pensé (solo trato las clases como selectores regulares), pero no parecen estar funcionando para mí. Voy a tener que revisar mi código y asegurarse de que no están siendo anulados de alguna manera ...

+0

¿No te refieres a usar 'Color: blue' en el' bold_blue' clase ? – BalusC

+0

Sip = o) |||||||| – Eli

+0

como nota al margen, si tiene clases como 'bold_green', entonces probablemente haya algo de malo en la forma en que está diseñando. mpen

Respuesta

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

O en el CSS:

.bold_green.bold_blue { color: pink; } 

Aviso que no hay espacio entre los selectores.

+0

Sin embargo, existen problemas de compatibilidad con IE, ¿no? –

+3

Sí, IE6 leerá css como .bold_blue {color: pink; }. Debe usar una variación de jQuery Paul proporcionada ya que jQuery puede seleccionarla correctamente y agregar una nueva clase con css apropiado: .something-else {color: pink; } También espero que esos no sean nombres reales de clase. –

+1

Idealmente, agregue el CSS como se recomienda aquí primero, y luego agregue el jQuery mencionado dentro de un comentario condicional para IE6. –

6

No es necesario nada especial, sólo

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

Paul y Voyager son correctas para el caso de múltiples clases.

Para el caso "tiene NIÑO" se debería utilizar:

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

Cuál será el estilo de cualquier bold_blue elementos dentro de un elemento bold_green.

O si quería un niño DIRECTO:

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

Cuál será el estilo de bold_blue sólo los elementos que tienen un padre inmediato bold_green.

1

En Visual Studio 2013, el ajuste de CSS se aplica a múltiples clases por una "coma" de la siguiente manera:

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

Cuestiones relacionadas