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