:is()Baseline · Widely available
The :is() CSS functional pseudo-class takes a selector list as its argument, and matches any element that can be selected by one of the selectors in that list.
Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Jan 21, 2021. Widely available since Jul 21, 2023.
Browser support
DesktopChrome
1–87Not supported
88+Supportedsince Jan 19, 2021
Current: 155Edge
12–87Not supported
88+Supportedsince Jan 21, 2021
Current: 154Firefox
1–81Not supported
82+Supportedsince Oct 20, 2020
Current: 157Safari
1–13.1Not supported
14+Supportedsince Sep 16, 2020
Current: 27MobileChrome Android
18–87Not supported
88+Supportedsince Jan 19, 2021
Current: 155Firefox Android
4–81Not supported
82+Supportedsince Oct 20, 2020
Current: 157Safari iOS
1–13.4Not supported
14+Supportedsince Sep 16, 2020
Current: 27How to use
This feature is Baseline widely available — use it freely, no fallback needed.
Example
CSS
/* Instead of: header a:hover, nav a:hover, footer a:hover */
:is(header, nav, footer) a:hover {
text-decoration: underline;
}Feature detection
CSS · check before using
@supports selector(:is(*)) {
/* styles that use :is(*) */
}
/* or in JavaScript */
if (CSS.supports("selector(:is(*))")) {
// use it
}Documentation (MDN)
Specification
Usage share
Sub-features
Support for each part of the feature (2). The overall table above shows when the whole feature works.
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| is | 88 | 88 | 78 | 14 | 88 | 79 | 14 |
| is.forgiving_selector_list | 88 | 88 | 82 | 14 | 88 | 82 | 14 |