2010-03-16 2 views
29

Nie jestem pewien, czy jest to możliwe, ale czy jest tam składnia do zastosowania w CSS, gdy chcesz stylować element na podstawie kombinacji klas zastosowanych do niego?CSS: styl zastosowany do kombinacji klas?

Rozumiem, że mogę sprawdzić element z jQuery lub czymś i zmienić jego styl w oparciu o klasy, które ma, ale czy jest to czysty sposób CSS, aby to zrobić?

Na przykład, jeśli mam klasy odważne i zielonej:

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

I klasy odważne i niebieskim:

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

teraz powiedzieć używam jQuery do dodawania i usuwania klasy dynamicznie i chcą dowolnego elementu, który ma obie klasy, aby włączyć kursywą różowy.

Coś jak:

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

Lub, jeśli chcę projektować element, który ma aclass i jest potomkiem innego elementu, który ma inną klasę?

Coś jak:

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

Dzięki!

Edit

Dzięki za wszystkie odpowiedzi. Są to w zasadzie to, o czym pomyślałem (traktując klasy jako zwykłe selektory), ale nie wydają się działać dla mnie. Będę musiał sprawdzić mój kod i upewnić się, że nie są przesłonięte jakoś ...

+0

Nie znaczy używać 'kolorów: blue' w klasie' bold_blue' ? – BalusC

+0

Yep = o) |||||||| – Eli

+0

jako sidenote, jeśli masz klasy takie jak "bold_green", to prawdopodobnie jest coś nie tak ze sposobem, w jaki projektujesz. mpen

Odpowiedz

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

Albo w CSS:

.bold_green.bold_blue { color: pink; } 

Wskazówka nie ma miejsca pomiędzy selektorów.

+0

Istnieją jednak problemy ze zgodnością IE, nie? –

+3

Tak, IE6 odczyta, że ​​css jako .bold_blue {color: pink; }. Powinieneś użyć odmiany jQuery Paul dostarczonej, ponieważ jQuery może ją właściwie wybrać i dodać nową klasę z odpowiednim css: .something-else {color: pink; } Mam też nadzieję, że nie są to prawdziwe nazwy klasowe. –

+1

Najlepiej, jeśli najpierw dodasz CSS zgodnie z zaleceniami, a następnie dodaj jQuery wspomniany w komentarzu warunkowym do IE6. –

6

Nie trzeba nic specjalnego, po prostu

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

Paul i Voyager są prawidłowe dla przypadku wielu klas.

Dla „ma dziecko” wypadku należałoby użyć:

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

Który styl żadnych bold_blue elementów wewnątrz elementu bold_green.

Lub jeśli chciał bezpośredni dziecko:

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

Który styl tylko bold_blue elementy, które mają bezpośredniego rodzica bold_green.

1

w Visual Studio 2013 ustawienie CSS jest stosowany do wielu klas przez „przecinek” w następujący sposób:

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