Comment travailler avec les sélecteurs CSS dans Python

Comment travailler avec les sélecteurs CSS dans Python

Le moteur de sélecteurs dans Aspose.HTML FOSS pour Python évalue les sélecteurs de classe, d’identifiant, de type, d’attribut et de pseudo-classe avec la spécificité standard. Ce guide montre le correspondance des sélecteurs à travers la cascade — le même moteur qui alimente select() et element_matches() — en utilisant pip pour l’installation.

Guide étape par étape

Étape 1: Installer le paquet

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

Étape 2: Importer les classes requises

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet

Étape 3: Créer un élément qui correspond à plusieurs sélecteurs

Un élément portant à la fois une classe et un id est sélectionné par les sélecteurs .foo, #bar et div simultanément :

doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)

Étape 4: laissez la spécificité décider

Ajoutez les règles concurrentes — le sélecteur ID (1,0,0) l’emporte sur le sélecteur de classe (0,1,0) :

sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: blue }")
doc.attach_style_sheet(sheet)
print(el.get_computed_style().get_property_value("color"))

Étape 5: remplacer par une déclaration en ligne

Les déclarations en ligne portent une priorité de niveau en ligne (1,0,0) et l’emportent sur les règles d’auteur, quelle que soit la spécificité du sélecteur :

inline = el.style
inline.set_property("color", "green")
print(el.get_computed_style().get_property_value("color"))

Problèmes courants et solutions

Un sélecteur qui semble correct ne correspond à rien. Le texte du sélecteur contenant des erreurs de syntaxe échoue lors de l’analyse — le moteur le signale au lieu de deviner ; vérifiez la chaîne du sélecteur.

:where() se comporte différemment de :is(). C’est ainsi par conception : :where() contribue à une spécificité nulle, :is() contribue à celle de son argument.

Un sélecteur de type perd de façon inattendue. Les sélecteurs de type possèdent la classe de spécificité la plus basse (0,0,1) ; toute règle de classe ou d’ID sur le même élément les surpasse.

Foire aux questions

Puis-je exécuter une requête de sélecteur sans feuille de style?

Oui — select() évalue un sélecteur directement contre un arbre, et element_matches() teste un seul élément.

Comment la spécificité est-elle calculée?

specificity() renvoie le tuple standard (id, class, type) utilisé à la fois par les requêtes et la cascade.

Quelles pseudo-classes sont modélisées?

Des formes structurées existent pour :is(), :where(), :has(), :not() avec des arguments complexes, et des sélecteurs structurels de type nth-child.

Voir aussi

 Français