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 CSSStyleSheetPasso 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.