Cómo trabajar con el CSSOM en Python

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 CSSStyleSheet

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

Ver también

 Español