
Selektor :matches
CSS pseudotřída :matches slouží ke zjednodušení zápisu dlouhých výčtů selektorů.
Zápis
Pokud budeme například chtít mít společný styl pro :hover a :focus stavy odkazů v nějakém společném elementu, jde to napsat nějak takto:
.spolecny a:hover,
.spolecny a:focus {
/* pravidla */
}
Selektorem :matches jde tento zápis zpřehlednit bez nutnosti se opakovat.
.spolecny a:matches(:hover, :focus) {
/* pravidla */
}
Tento selektor zachytí všechny odkazy v rodiči s třídou spolecny, které vyhovují pseudo-třídám :hover nebo :focus.
Dalším případem užití může být například stylování nadpisů v rámci .obalu.
.obal h1,
.obal h2,
.obal h3 {
/* pravidla */
}
S použitím :matches:
.obal :matches(h1, h2, h3) {
/* pravidla */
}
V rámci jednoho předpisu může být :matches použit i vícekrát. Tento kód se proto aplikuje na všechny h1, h2 a h3 v elementech .obal nebo .jiny-obal.
:matches(.obal, .jiny-obal) :matches(h1, h2, h3) {
/* pravidla */
}
Podpora v prohlížečích
Selektor :matches zatím není podporován, obdobně ale funguje selektor :any s CSS prefixy s podporou trochu lepší:
:-webkit-any– Chrome 12+, Safari 5+, Opera 15+:-moz-any– Firefox 4+
Poznámka: Selektory s prefixy není možné sdružovat, musí se duplikovat. Tohle proto fungovat nebude:
a:-webkit-any(:hover, :focus),
a:-moz-any(:hover, :focus) {
/* nebude fungovat */
}
Matches v JavaScriptu
V JavaScriptu obdobně slouží metoda matchesSelector. Zatím je podporovaná s prefixy, případně jde doplnit querySelectorem.
Živá ukázka s využitím polyfillu
Odkazy jinam
- W3C: The Matches-any Pseudo-class
- MDN:
:any - rework-matches – polyfill selektoru
:matches
Související články
Možnosti stylování <iframe>
Co lze a nelze u <iframe> ovlivnit pomocí CSS a jak na změnu textu nebo barev.
Zvýraznění aktivní sekce při rolování
Moderní způsoby zvýraznění aktivní položky navigace podle aktuální sekce – CSS i IntersectionObserver.