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