Como trabalhar com o CSSOM em Python

Como trabalhar com o CSSOM em Python

Aspose.HTML FOSS para Python implementa o modelo de objeto CSS: folhas de estilo são analisadas em objetos de regra ao vivo, anexadas aos documentos e resolvidas por meio de uma cascata real. Este guia estiliza um elemento e lê o resultado computado, usando pip para instalação.

Guia passo a passo

Passo 1: Instalar 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: Importar as classes necessárias

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

Passo 3: Construir um elemento estilizado

Crie um documento e um elemento com uma classe e um id — ambos participarão da correspondência de seletores:

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

Etapa 4: Analisar e Anexar uma Folha de Estilos

replace_sync() analisa o texto da folha de estilos; attach_style_sheet() registra-a no documento:

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

Etapa 5: Ler o Estilo Computado

O seletor de ID (especificidade 1,0,0) supera o seletor de classe (0,1,0), portanto o azul prevalece:

style = el.get_computed_style()
print(style.get_property_value("color"))

Problemas Comuns e Correções

O valor computado ignora minha folha de estilo. A folha deve ser anexada via Document.attach_style_sheet() before get_computed_style() é chamado.

Um estilo embutido perde para uma regra de folha de estilo. Regras do autor marcadas !important sobrepõem declarações embutidas não importantes; inspecione prioridades com get_property_priority().

Duas regras com a mesma especificidade dão um vencedor surpreendente. Regras posteriores vencem empates de especificidade igual — a ordem das regras dentro da folha importa.

Perguntas Frequentes

Como definir estilos inline programaticamente?

Através da declaração style do elemento: atribua-a a uma variável e chame set_property() nela.

Qual objeto get_computed_style retorna?

Um ComputedStyleDeclaration; leia os valores com get_property_value().

As regras de media, keyframes e font-face são modeladas?

Sim — planilhas analisadas contêm regras tipadas incluindo CSSMediaRule, CSSKeyframesRule e CSSFontFaceRule em um CSSRuleList.

Ver também

 Português