Reputation: 74650
What is the syntax for selecting the first element with a certain class? Please specify whether that method of selection is part of CSS3 or CSS2.1.
Upvotes: 18
Views: 20143
Reputation: 2316
You can now use selectors inside :nth-child
and :nth-last-child
. So if you have:
<div class="my-container">
<div class="class1"></div>
<div class="class1"></div>
<div class="class2"></div>
<div class="class2"></div>
</div>
Select the div
with the first class2
with this:
:nth-child(1 of .class2) {
background: white
}
Or, if you want more specificity, this:
.my-container .class2:nth-child(1 of .class2) {
background: white
}
Further reading:
Upvotes: 1
Reputation: 1895
This problem sucks as bad as the solutions. IMO you should just give the first element a class of .first{}
programmatically.
Upvotes: 0
Reputation: 23907
If you need the first element with a certain class among its siblings, you can use
.myclass {
/* styles of the first one */
}
.myclass ~ .myclass {
/* styles of the others (must cancel the styles of the first rule) */
}
Don't try to use .myclass:not(.myclass ~ .myclass)
to do this in only one rule, it won't work since :not()
only accepts simple selectors in the parentheses.
If you want the first .myclass
in the whole document, there is no way to do it with CSS alone.
The :nth-of-type()
or :nth-child()
approaches posted are wrong, even if they coincidentally happen to match the elements you want in your page.
Browser support of sibling selector (~): IE7+ and all others.
Upvotes: 61
Reputation: 1413
Try this
.testparent .test:first-child {
color: red;
}
<div class="testparent">
<div class="test">test</div>
<div class="test">test</div>
<div class="test">test</div>
</div>
the first div 'test' has red color only.
Upvotes: -1