Moderní tvorba webových aplikací
O webu

Selektor :matches

CSS pseudotřída :matches slouží ke zjednodušení zápisu dlouhých výčtů selektorů.

3 minuty

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-anyChrome 12+, Safari 5+, Opera 15+
  • :-moz-anyFirefox 4+

Živá ukázka

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

Co si myslíte o tomto článku?

Diskuse

Související články

CSS item-pack: balance – vyvážené rozložení flex položek

Vlastnost item-pack: balance rozděluje flex položky rovnoměrně mezi řádky, podobně jako text-wrap: balance vyvažuje řádky textu.

11 minut

CSS Container Queries – responsivní komponenty

Jak pomocí @container, container-type a container-name vytvářet komponenty, které se přizpůsobí velikosti svého rodiče místo viewportu.

16 minut

CSS Anchor Positioning – posicování elementů relativně k jiným

Jak pomocí anchor-name, position-anchor a funkce anchor() posicovat elementy relativně k jiným bez JavaScriptu.

6 minut

Centrování na webových stránkách

Moderní způsoby vertikálního i horizontálního centrování v CSS. Flexbox, Grid, margin auto a další techniky.

8 minut

Novinky e-mailem

Když budu mít něco opravdu zajímavého, můžu vám to poslat e-mailem

Přidej se k 500+ čtenářům
Jen kvalitní obsah
Žádný spam

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků · Témata · Zkratky
2013–2026