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ém | Příčina | Oprava |
|---|---|---|
| Selektor neodpovídá ničemu | Chyba syntaxe v textu selektoru | parse() 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/Metoda | Popis: |
|---|---|
select | Vyhodnoťte selektor vůči stromu |
element_matches | Testovat jeden prvek |
parse | Rozparsovat text selektoru do SelectorList |
specificity | Vypočítejte n-tici specifikace |
HasPseudoClass | Strukturovaný :has() formulář |
AttributeSelector | Porovnávač atributů s operátory |