Wie man mit dem CSSOM in Python arbeitet

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 CSSStyleSheet

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

Siehe auch

 Deutsch