Cum să lucrați cu CSSOM în Python

Cum să lucrați cu CSSOM în Python

Aspose.HTML FOSS pentru Python implementează modelul de obiecte CSS: foile de stil sunt analizate în obiecte de regulă live, se atașează la documente și se rezolvă printr-un cascade real. Acest ghid stilizează un element și citește rezultatul calculat, folosind pip pentru instalare.

Ghid pas cu pas

Pasul 1: Instalaţi pachetul

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

Pasul 2: Importaţi clasele necesare

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

Pasul 3: Construiţi un element stilizat

Creează un document și un element cu o clasă și un id — ambele vor participa la potrivirea selectorilor:

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

Pasul 4: Analizează și atașează o foaie de stil

replace_sync() analizează textul foii de stil; attach_style_sheet() o înregistrează în document:

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

Pasul 5: Citește stilul calculat

Selectorul ID (specificitate 1,0,0) are prioritate față de selectorul de clasă (0,1,0), așa că albastru câștigă:

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

Probleme comune și remedii

Valoarea calculată ignoră foaia mea de stil. Foaia trebuie atașată prin Document.attach_style_sheet() before get_computed_style() se numește.

Un stil inline pierde în fața unei reguli din foaia de stil. Regulile autorului marcate !important au prioritate față de declarațiile inline neimportante; inspectați prioritățile cu get_property_priority().

Două reguli cu aceeași specificitate dau un câștigător surprinzător. Regulile ulterioare câștigă în egalitatea de specificitate — ordinea regulilor în interiorul foii contează.

Întrebări frecvente

Cum pot seta stilurile în linie programatic?

Prin declarația style a elementului: atribuiți-o unei variabile și apelați set_property() pe ea.

Ce obiect returnează get_computed_style?

Un ComputedStyleDeclaration; citiți valorile cu get_property_value().

Sunt modelate regulile media, keyframes și font-face?

Da — foile analizate conțin reguli tipizate care includ CSSMediaRule, CSSKeyframesRule și CSSFontFaceRule într-un CSSRuleList.

Vezi și:

 Română