Bevezetés

A legtöbb HTML eszköz csak a fánál áll meg. Aspose.HTML FOSS a Python számára egy lépéssel tovább megy: megvalósítja a CSS objektummodellt, így a stíluslap nem csupán egy szöveg, amit magaddal viszel — részt vesz egy valódi kaszkádban, és minden elem meg tudja mondani, milyen stílusban végül megjelenik.

Ez a mélymerülés a CSSOM réteget tárgyalja: stíluslapok elemzése a CSSStyleSheet segítségével, deklarációk szerkesztése a CSSStyleDeclaration által, és az eredmények visszaolvasása a Element.get_computed_style() segítségével — beleértve, hogyan működik együtt a specifikusság, a !important, és az öröklődés. A könyvtár a PyPI alatt érhető el, mint aspose-html-foss, MIT licenc alatt, és tiszta Python (3.10+), ami gyakorlati használatra teszi alkalmasá a stílusellenőrzést tesztsorokban és szolgáltatásokban, ahol egy fej nélküli böngésző túlzás lenne.


Főbb jellemzők

Stíluslapok elemzése és csatolása

CSSStyleSheet.replace_sync() helyben elemzi a stíluslap szövegét; Document.attach_style_sheet() regisztrálja a lapot a dokumentummal, hogy részt vegyen a kaszkádban. A lapok szabályról szabályra is felépíthetők a insert_rule(), add_rule() és remove_rule() segítségével, vagy szövegből létrehozhatók a from_text() használatával:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red }")
doc.attach_style_sheet(sheet)

A specifikusság dönt a győztesről

Amikor több szabály célozza ugyanazt az elemet, a kiszámított érték a szelektor specifikusságát követi. Egy ID szelektor (specifikusság 1,0,0) felülülírja az osztály szelektort (0,1,0):

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: blue }")
doc.attach_style_sheet(sheet)
print(el.get_computed_style().get_property_value("color"))

Beágyazott deklarációk és CSSStyleDeclaration

Minden elem style tulajdonsága egy élő CSSStyleDeclaration. A deklarációkat a set_property() segítségével szerkesztik, és a get_property_value(), get_property_priority() és item() segítségével vizsgálják. A beágyazott deklarációk (1,0,0) specifikussággal rendelkeznek, ezért felülbírálják a szerzői stíluslapok típus- és osztályszabályait:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red }")
doc.attach_style_sheet(sheet)
inline = el.style
inline.set_property("color", "blue")
print(el.get_computed_style().get_property_value("color"))

A fontosság felülírja a specifikusságot

!important megfordítja a szokásos eredményt: egy szerző által !important jelölt szabály felülülír egy nem fontos beágyazott deklarációt, a specifikusságtól függetlenül. A prioritásokat programozottan is be lehet állítani a set_property_priority() segítségével:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red !important }")
doc.attach_style_sheet(sheet)
inline = el.style
inline.set_property("color", "blue")
print(el.get_computed_style().get_property_value("color"))

Öröklés és az inherit kulcsszó

Az örökölhető tulajdonságok, például a color, a szülőtől a gyermekhez áramlanak, hacsak a gyermeknek nincs saját helyi értéke – egy helyi szabály mindig felülírja az örököltet. A kifejezett inherit kulcsszó a szülő kiszámított értékét másolja, és egy szülő nélküli gyökérelem esetén visszatér a tulajdonság kezdeti értékéhez:

from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
doc.append_child(el)
inline = el.style
inline.set_property("color", "inherit")
print(el.get_computed_style().get_property_value("color"))

Gyors kezdés

Telepítés innen PyPI:

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

Oldja meg a háromoldalú konfliktust — osztályszabály vs. ID-szabály vs. beágyazott deklaráció:

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

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

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

inline = el.style
inline.set_property("color", "blue")

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

Nyílt forráskód és licencelés

Aspose.HTML FOSS a(z) Python számára MIT licenc alatt kerül kiadásra — a kereskedelmi felhasználás, módosítás és újraelosztás megengedett. A forrás a GitHub helyen érhető el, és a kiadások PyPI néven érkeznek, mint aspose-html-foss.


Kezdő lépések

Kapcsolódó források