:is() and :(where)
This selector is used as a way to reduce code writing, a little bit like SASS does.
If you have several compound selectors such as:
.content p,
.content ul,
.content ol {
/* some code */
}
you can now write this on one line: .content :is(p, ul, ol)
.
It can also work the other way around: :is(header, footer) a:hover
which selects the hover state on links in the header and the footer.
Specificity
When you have several elements—here we’re targeting the ems of p, ol and .frame :is(p, ol, .frame) em
—the specificity of each is replaced with the specificity of the most specific. All the ems selected will have the specificity of the most specific .frame em
.
Example use
:is(h2, h3, h4):not(first-child) {
margin-top: 2em;
}
:where()
From CSS Tricks:
The
:where()
pseudo selector in CSS is functionally identical to the:is()
psuedo selector in that it takes a comma-separated list of selectors to match against, except that where:is()
takes the most specific among them as the specificity of that whole part, the specificity of:where()
is always zero (0).
Links
- CSS Tricks reliable as ever.
- CSS Tricks on
:where()
- Kevin Powell’s short Youtube vid