Hur man arbetar med CSSOM i Python

Hur man arbetar med CSSOM i Python

Aspose.HTML FOSS för Python implementerar CSS-objektmodellen: stilmallar parsas till levande regelobjekt, fästs på dokument och löses upp genom en riktig kaskad. Denna guide formaterar ett element och läser det beräknade resultatet, med pip för installation.

Steg-för-steg-guide

Steg 1: Installera paketet

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

Steg 2: Importera nödvändiga klasser

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

Steg 3: Bygg ett stylat element

Skapa ett dokument och ett element med en klass och ett id — båda kommer att delta i selektormatchning:

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

Steg 4: Analysera och bifoga en stilmall

replace_sync() analyserar stilmallstext; attach_style_sheet() registrerar den i dokumentet:

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

Steg 5: Läs den beräknade stilen

ID-selektorn (specificitet 1,0,0) har företräde framför klass-selektorn (0,1,0), så blå vinner:

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

Vanliga problem och lösningar

Det beräknade värdet ignorerar min stilmall. Stilmallen måste bifogas via Document.attach_style_sheet() before get_computed_style() kallas.

En inline-stil förlorar mot en regel i stilmallen. Författarregler markerade !important går före icke-viktiga inline-deklarationer; inspektera prioriteringar med get_property_priority().

Två regler med samma specificitet ger en överraskande vinnare. Senare regler vinner vid lika specificitet — regelföljden i bladet är viktig.

Vanliga frågor

Hur sätter jag inline-stilar programmässigt?

Genom elementets style-deklaration: tilldela den till en variabel och anropa set_property() på den.

Vilket objekt returnerar get_computed_style?

Ett ComputedStyleDeclaration; läs värden med get_property_value().

Är media-, keyframes- och font-face-regler modellerade?

Ja — analyserade blad innehåller typade regler inklusive CSSMediaRule, CSSKeyframesRule och CSSFontFaceRule i en CSSRuleList.

Se även

 Svenska