Cómo trabajar con el CSSOM en Python
Aspose.HTML FOSS para Python implementa el modelo de objetos CSS: las hojas de estilo se analizan en objetos de regla en vivo, se adjuntan a los documentos y se resuelven mediante una cascada real. Esta guía aplica estilos a un elemento y lee el resultado computado, usando pip para la instalación.
Guía paso a paso
Paso 1: Instalar el paquete
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Paso 2: Importar las clases requeridas
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheetPaso 3: Crear un elemento con estilo
Crea un documento y un elemento con una clase y un id — ambos participarán en la coincidencia de selectores:
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)Paso 4: Analizar y Adjuntar una Hoja de Estilos
replace_sync() analiza el texto de la hoja de estilos; attach_style_sheet() lo registra en el documento:
sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: blue }")
doc.attach_style_sheet(sheet)Paso 5: Leer el estilo computado
El selector ID (especificidad 1,0,0) supera al selector de clase (0,1,0), por lo que el azul gana:
style = el.get_computed_style()
print(style.get_property_value("color"))Problemas comunes y soluciones
El valor calculado ignora mi hoja de estilo. La hoja debe estar adjunta mediante Document.attach_style_sheet() before get_computed_style() se llama.
Un estilo en línea pierde frente a una regla de hoja de estilo. Reglas del autor marcadas !important superan a las declaraciones en línea no importantes; inspecciona prioridades con get_property_priority().
Dos reglas con la misma especificidad dan un ganador sorprendente. Las reglas posteriores ganan en empates de igual especificidad — el orden de las reglas dentro de la hoja importa.
Preguntas Frecuentes
¿Cómo establezco estilos en línea programáticamente?
A través de la declaración style del elemento: asígnala a una variable y llama a set_property() sobre ella.
¿Qué objeto devuelve get_computed_style?
Un ComputedStyleDeclaration; lee los valores con get_property_value().
¿Se modelan las reglas de media, keyframes y font-face?
Sí — las hojas analizadas contienen reglas tipadas que incluyen CSSMediaRule, CSSKeyframesRule y CSSFontFaceRule en un CSSRuleList.