Jak pracovat s CSSOM v Python

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 CSSStyleSheet

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

Viz také:

 Čeština