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.
5 Answers
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.
4 Comments
2023 answer
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:
Comments
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.
.class-name:first-of-type {
⋮ declarations
}
1 Comment
:first-of-type selector applies to element names, not class names: developer.mozilla.org/en-US/docs/Web/CSS/:first-of-type