Come lavorare con i selettori CSS in Python

Come lavorare con i selettori CSS in Python

Il motore di selezione in Aspose.HTML FOSS per Python valuta i selettori di classe, id, tipo, attributo e pseudo-classe con la specificità degli standard. Questa guida dimostra il matching dei selettori attraverso la cascata — lo stesso motore che alimenta select() e element_matches() — utilizzando pip per l’installazione.

Guida passo passo

Passo 1: Installa il pacchetto

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

Passo 2: Importa le classi necessarie

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

Passo 3: Crea un elemento che corrisponde a più selettori

Un elemento che possiede sia una classe sia un id viene corrisposto dai selettori .foo, #bar e div simultaneamente:

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

Passo 4: Lascia che la Specificità decida

Allega regole concorrenti — il selettore ID (1,0,0) supera il selettore di 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"))

Passo 5: Sovrascrivi con una Inline Declaration

Le dichiarazioni inline hanno priorità (1,0,0) a livello inline e superano le regole dell’autore di qualsiasi specificità del selettore:

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

Problemi comuni e soluzioni

Un selettore che sembra corretto non corrisponde a nulla. Il testo del selettore con errori di sintassi non riesce a essere analizzato — il motore lo segnala invece di indovinare; controlla la stringa del selettore.

:where() si comporta diversamente da :is(). È così di proposito: :where() contribuisce con specificità zero, :is() contribuisce a quella del suo argomento.

Un selettore di tipo perde inaspettatamente. I selettori di tipo hanno la classe di specificità più bassa (0,0,1); qualsiasi regola di classe o ID sullo stesso elemento le supera.

Domande frequenti

Posso eseguire una query di selettore senza un foglio di stile?

Sì — select() valuta un selettore direttamente su un albero, e element_matches() verifica un singolo elemento.

Come viene calcolata la specificità?

specificity() restituisce la tupla standard (id, class, type) utilizzata sia dalle query che dalla cascata.

Quali pseudo-classi sono modellate?

Esistono forme strutturate per :is(), :where(), :has(), :not() con argomenti complessi e selettori strutturali in stile nth-child.

Vedi anche

 Italiano