I have an unordered list, using bootstraps "tabs" plugin. The code looks like this:
<ul>
<li class="active span3"><a href="#ourAgency" data-toggle="tab"><i class="icon-building icon-3x"></i>Our Agency</a></li>
<li class="span3"><a href="#studentVisas" data-toggle="tab"><i class="icon-laptop icon-3x"></i>Student Visas</a></li>
<li class="span3"><a href="#workVisas" data-toggle="tab"><i class="icon-suitcase icon-3x"></i>Work Visas</a></li>
<li class="span3"><a href="#accreditation" data-toggle="tab"><i class="icon-legal icon-3x"></i>Accreditation</a></li>
</ul>
I'd like to use CSS3 to change the colour of all the <a>
links whose parent <li>
DOESN'T have the class .active
.
I've tried something like this:
a:not(li.active>a){
color:grey;
}
but to no avail. Is there any way to do this or am I barking up the wrong tree?
Combinators such as
>
,+
and space for descendant aren't allowed within:not()
in CSS; they're only allowed as a jQuery selector. You can find out more in this other question.That said, you may be able to use
:not()
on theli
alone, and move out the> a
part; however this will depend on the structure of yourul
andli
elements:For example, you can always chain other selectors, such as
.span3
if you want to limit it toa
elements withli
parents of that class only:Keep in mind, though, that you can only rely on using
:not()
in this manner if you have control over the markup or the structure is at least predictable (e.g. you know what kind of elements the parents are). In your case for example, you're only looking atli.span3 > a
, and applying styles only when theli.span3
does not have the active class. With this information you can construct a selector like one of the above, which should work as expected.