CSS Selektory

CSS Selektory

Engine selektorů parsuje text selektoru CSS do strukturované podoby a vyhodnocuje jej vůči stromům DOM. Podporuje jak přímé dotazy, tak shodu pravidel kaskády.


Spouštění selektorů

select() vyhodnocuje selektor vůči stromu a vrací shody; element_matches() testuje jediný prvek. Oba přijímají standardní syntaxi selektorů— typové, třídní, id, atributové a pseudo-třídové selektory, včetně spojitých a složených kombinací.

Struktury parsovaných selektorů

parse() vytváří SelectorList ComplexSelector a CompoundSelector položek postavených z TypeSelector, ClassSelector, IDSelector, AttributeSelector (s AttributeOperator), UniversalSelector a Combinator částí.

Pseudo-třídy

Funkční pseudo-třídy jsou modelovány explicitně: IsPseudoClass, WherePseudoClass, HasPseudoClass, ComplexNotPseudoClass, a strukturální varianty nth-child pomocí NthFilteredChildPseudoClass s NthArgument.

Specificity

specificity() vypočítává standardní trojkomponentový n-tici pro selektor a max_specificity() zkracuje seznam; match() spojuje parsování a vyhodnocování dohromady. Jedná se o stejné hodnoty, které používá kaskáda, takže výsledky dotazů a vypočítané styly jsou vždy v souladu.


Tipy a osvědčené postupy

  • Použijte element_matches() uvnitř filtrů místo opakovaného spouštění select() pro každý prvek
  • Analyzujte jednou a znovu použijte SelectorList, když se stejný selektor používá na mnoho stromů
  • Když pravidlo nečekaně ztratí kaskádu, porovnejte hodnoty specificity() přímo

Běžné problémy

ProblémPříčinaOprava
Selektor neodpovídá ničemuChyba syntaxe v textu selektoruparse() vyvolá prostřednictvím syntax_error — zkontrolujte zprávu
Vázané situace se stejnou specifikací jsou vyřešeny “wrong”Závislost na pořadíPozdější pravidla vítězí v remízách; zkontrolujte pořadí pravidel
:is() vs :where() zmatek:where() přispívá nulovou specifičnostíVyberte podle zamýšlené váhy kaskády

FAQ

Jak otestuji jeden prvek vůči selektoru?

element_matches() — vrací boolean bez prohledávání stromu.

Jak se počítá specifikčnost?

specificity() vrací standardní (id, class, type) komponentovou trojici; :where() skupiny přispívají nulou.

Jaké pseudo-třídy jsou podporovány?

Strukturované formy v API: :is(), :where(), :has(), :not() s komplexními argumenty a strukturální selektory ve stylu nth-child.


API Reference Shrnutí

Třída/MetodaPopis:
selectVyhodnoťte selektor vůči stromu
element_matchesTestovat jeden prvek
parseRozparsovat text selektoru do SelectorList
specificityVypočítejte n-tici specifikace
HasPseudoClassStrukturovaný :has() formulář
AttributeSelectorPorovnávač atributů s operátory

Viz také:

 Čeština