Pendahuluan

Sebagian besar alat HTML berhenti pada pohonnya. Aspose.HTML FOSS untuk Python melangkah satu lapisan lebih jauh: ia mengimplementasikan model objek CSS, sehingga stylesheet bukan sekadar teks yang Anda bawa — ia berpartisipasi dalam cascade yang sebenarnya, dan setiap elemen dapat memberi tahu Anda gaya yang sebenarnya diterapkan padanya.

Penyelaman mendalam ini mencakup lapisan CSSOM: parsing stylesheet dengan CSSStyleSheet, mengedit deklarasi melalui CSSStyleDeclaration, dan membaca kembali hasilnya dengan Element.get_computed_style() — termasuk bagaimana spesifisitas, !important, dan pewarisan berinteraksi. Perpustakaan ini berada di PyPI sebagai aspose-html-foss, berlisensi MIT, dan murni Python (3.10+), yang menjadikannya praktis untuk verifikasi gaya dalam suite pengujian dan layanan di mana browser tanpa kepala akan berlebihan.


Fitur Utama

Parse dan Lampirkan Stylesheet

CSSStyleSheet.replace_sync() mem-parse teks stylesheet di tempat; Document.attach_style_sheet() mendaftarkan lembar dengan dokumen sehingga ia berpartisipasi dalam cascade. Lembar juga dapat dibangun aturan demi aturan dengan insert_rule(), add_rule(), dan remove_rule(), atau dibuat dari teks dengan from_text():

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)

Spesifisitas Menentukan Pemenang

Ketika beberapa aturan menargetkan elemen yang sama, nilai yang dihitung mengikuti spesifisitas selector. Selector ID (spesifisitas 1,0,0) mengungguli selector kelas (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"))

Deklarasi Inline dan CSSStyleDeclaration

Properti style setiap elemen adalah CSSStyleDeclaration yang hidup. Deklarasi diedit dengan set_property() dan diperiksa dengan get_property_value(), get_property_priority(), dan item(). Deklarasi inline memiliki spesifisitas (1,0,0), sehingga mereka mengalahkan aturan tipe dan kelas dari stylesheet penulis:

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"))

Pentingnya Mengungguli Spesifisitas

!important membalikkan hasil biasanya: aturan penulis yang ditandai !important mengalahkan deklarasi inline yang tidak penting, terlepas dari spesifisitas. Prioritas juga dapat diatur secara programatik dengan set_property_priority():

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"))

Pewarisan dan Kata Kunci inherit

Properti yang dapat diwariskan seperti color mengalir dari induk ke anak kecuali anak memiliki nilai lokalnya sendiri — aturan lokal selalu menggantikan yang diwariskan. Kata kunci inherit yang eksplisit menyalin nilai terhitung induk, dan pada elemen akar yang tidak memiliki induk, nilai tersebut kembali ke nilai awal properti:

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"))

Mulai Cepat

Instal dari PyPI:

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

Selesaikan konflik tiga arah — aturan kelas vs. aturan ID vs. deklarasi inline:

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"))

Sumber Terbuka & Lisensi

Aspose.HTML FOSS untuk Python didistribusikan di bawah lisensi MIT — penggunaan komersial, modifikasi, dan redistribusi diperbolehkan. Sumber berada di GitHub dan rilis dikirim ke PyPI sebagai aspose-html-foss.


Memulai

Sumber Daya Terkait