Como trabalhar com CSS Seletores no Python

Como trabalhar com CSS Seletores no Python

O mecanismo de seletores em Aspose.HTML FOSS para Python avalia seletores de classe, id, tipo, atributo e pseudo-classe com especificidade de padrões. Este guia demonstra a correspondência de seletores através da cascata — o mesmo mecanismo que alimenta select() e element_matches() — usando pip para instalação.

Guia passo a passo

Passo 1: Instale o pacote

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: Importe as classes necessárias

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

Passo 3: Crie um elemento que corresponda a múltiplos seletores

Um elemento que possui tanto uma classe quanto um id é correspondido pelos seletores .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)

Etapa 4: Deixe a especificidade decidir

Anexe regras concorrentes — o seletor de ID (1,0,0) supera o seletor 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"))

Etapa 5: Substitua com uma declaração inline

Declarações inline possuem prioridade de nível inline (1,0,0) e superam as regras do autor de qualquer especificidade de seletor:

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

Problemas comuns e correções

Um seletor que parece correto não corresponde a nada. Texto de seletor com erros de sintaxe falha ao analisar — o motor o relata em vez de adivinhar; verifique a string do seletor.

:where() comporta-se de forma diferente de :is(). Isso é intencional: :where() contribui com especificidade zero, :is() contribui com a do seu argumento.

Um seletor de tipo perde inesperadamente. Seletores de tipo têm a classe de especificidade mais baixa (0,0,1); qualquer regra de classe ou id no mesmo elemento as supera.

Perguntas Frequentes

Posso executar uma consulta de seletor sem uma folha de estilos?

Sim — select() avalia um seletor diretamente contra uma árvore, e element_matches() testa um único elemento.

Como a especificidade é calculada?

specificity() devolve a tupla padrão (id, class, type) usada tanto por consultas quanto pela cascata.

Quais pseudo-classes são modeladas?

Formas estruturadas existem para :is(), :where(), :has(), :not() com argumentos complexos e seletores estruturais no estilo nth-child.

Ver também

 Português