Wie man mit dem CSSOM in Python arbeitet
Aspose.HTML FOSS für Python implementiert das CSS-Objektmodell: Stylesheets werden in Live-Regelobjekte geparst, an Dokumente angehängt und durch eine echte Kaskade aufgelöst. Dieser Leitfaden stylt ein Element und liest das berechnete Ergebnis, wobei pip für die Installation verwendet wird.
Schritt-für-Schritt-Anleitung
Schritt 1: Paket installieren
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Schritt 2: Erforderliche Klassen importieren
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheetSchritt 3: Ein gestyltes Element erstellen
Erstelle ein Dokument und ein Element mit einer Klasse und einer ID — beide nehmen am Selektor-Matching teil:
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)Schritt 4: Stylesheet parsen und anhängen
replace_sync() parst den Stylesheet-Text; attach_style_sheet() registriert ihn beim Dokument:
sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: blue }")
doc.attach_style_sheet(sheet)Schritt 5: Berechneten Stil auslesen
Der ID-Selektor (Spezifität 1,0,0) hat Vorrang vor dem Klassen-Selektor (0,1,0), also gewinnt blau:
style = el.get_computed_style()
print(style.get_property_value("color"))Häufige Probleme und Lösungen
Der berechnete Wert ignoriert mein Stylesheet. Das Stylesheet muss über Document.attach_style_sheet() before get_computed_style() wird genannt.
Ein Inline-Style verliert gegen eine Stylesheet-Regel. Autor-Regeln markiert !important stehen über nicht-wichtigen Inline-Deklarationen; prüfen Sie Prioritäten mit get_property_priority().
Zwei Regeln mit derselben Spezifität ergeben einen überraschenden Gewinner. Spätere Regeln gewinnen bei Gleich-Spezifitäts-Unentschieden — die Reihenfolge der Regeln im Stylesheet ist entscheidend.
Häufig gestellte Fragen
Wie setze ich Inline-Stile programmgesteuert?
Über die style-Deklaration des Elements: Weisen Sie sie einer Variablen zu und rufen Sie set_property() darauf auf.
Welches Objekt gibt get_computed_style zurück?
Ein ComputedStyleDeclaration; Werte lesen Sie mit get_property_value().
Sind Media-, Keyframes- und Font-Face-Regeln modelliert?
Ja — geparste Tabellen enthalten typisierte Regeln, einschließlich CSSMediaRule, CSSKeyframesRule und CSSFontFaceRule in einem CSSRuleList.