Jak zapewne już wiesz, możesz mieć wiele klas elementów oddzielonych spacją.
Przykład
<div class="content main"></div>
I CSS, które można kierować div
z albo .content
albo .main
. Czy istnieje sposób na skierowanie go wtedy i tylko wtedy, gdy obie klasy są obecne?
Przykład
<div class="content main">I want this div</div>
<div class="content">I don't care about this one</div>
<div class="main">I don't want this</div>
Którego selektora CSS użyłbym, aby uzyskać div
tylko pierwszy (zakładając, że nie mogę użyć .content:first-child
lub podobnego)?
css
css-selectors
Alex
źródło
źródło
Ze względu na to (nie polecam ci tego robić), jest inny sposób:
.content[class~="main"] {}
Lub:
.main[class~="content"] {}
Źródła: http://www.w3.org/TR/CSS2/selector.html
Demo: http://jsfiddle.net/eXrSg/
Dlaczego jest to faktycznie przydatne (przynajmniej dla IE6):
Ponieważ IE6 nie obsługuje wielu klas, nie możemy ich używać
.content.main
, ale są pewne biblioteki javascript, takie jak IE-7.js, które umożliwiają selektor atrybutów, ale nadal wydają się nie działać, jeśli chodzi o wiele klas. Przetestowałem to obejście w IE6 z javascriptem włączającym selektor atrybutów i jest brzydkie, ale działa.Nie znalazłem jeszcze skryptu, który sprawia, że IE6 obsługuje wiele selektorów klas, ale znalazłem wiele, które umożliwiają selektory atrybutów. Jeśli ktoś zna taki, który działa , daj mi znać w komentarzach, abym pozbył się tego obejścia.
źródło