Jak pracovat s CSSOM v Python
Aspose.HTML FOSS pro Python implementuje objektový model CSS: styly se parsují do živých objektů pravidel, připojují k dokumentům a řeší se pomocí skutečného kaskádování. Tento průvodce styluje prvek a čte vypočtený výsledek, přičemž pro instalaci používá pip.
Krok za krokem
Krok 1: Nainstalujte balíček
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Krok 2: Importujte požadované třídy
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheetKrok 3: Vytvořte stylovaný prvek
Vytvořte dokument a prvek s třídou a id — oba se budou účastnit porovnávání selektorů:
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)Krok 4: Parsovat a připojit stylový list
replace_sync() parsuje text stylového listu; attach_style_sheet() jej registruje v dokumentu:
sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: blue }")
doc.attach_style_sheet(sheet)Krok 5: Načíst vypočtený styl
Selektor ID (specifičnost 1,0,0) má přednost před selektorem třídy (0,1,0), takže modrá vyhrává:
style = el.get_computed_style()
print(style.get_property_value("color"))Běžné problémy a opravy
Vypočtená hodnota ignoruje můj stylopis. List musí být připojen pomocí Document.attach_style_sheet() before get_computed_style() se nazývá.
Inline styl prohrává proti pravidlu stylopisu. Pravidla autora označená !important převyšují ne-důležité inline deklarace; zkontrolujte priority pomocí get_property_priority().
Dvě pravidla se stejnou specificitou přinášejí překvapivého vítěze. Pozdější pravidla vyhrávají při remíze se stejnou specificitou — pořadí pravidel v rámci listu má význam.
Často kladené otázky
Jak nastavit inline styly programově?
Pomocí deklarace style prvku: přiřaďte ji do proměnné a zavolejte na ní set_property().
Jaký objekt vrací get_computed_style?
Jedná se o ComputedStyleDeclaration; hodnoty čtěte pomocí get_property_value().
Jsou pravidla media, keyframes a font-face modelována?
Ano — analyzované listy obsahují typované pravidla včetně CSSMediaRule, CSSKeyframesRule a CSSFontFaceRule v CSSRuleList.