Cara Bekerja dengan CSS Selektor di Python

Cara Bekerja dengan CSS Selektor di Python

Mesin selektor dalam Aspose.HTML FOSS untuk Python mengevaluasi selektor kelas, id, tipe, atribut, dan pseudo-kelas dengan spesifisitas standar. Panduan ini menunjukkan pencocokan selektor melalui kaskade — mesin yang sama yang menggerakkan select() dan element_matches() — menggunakan pip untuk instalasi.

Panduan Langkah demi Langkah

Langkah 1: Instal Paket

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

Langkah 2: Impor Kelas yang Diperlukan

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

Langkah 3: Buat Elemen yang Cocok dengan Beberapa Selektor

Elemen yang memiliki baik kelas maupun id cocok dengan selector .foo, #bar, dan div secara bersamaan:

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

Langkah 4: Biarkan Spesifisitas Menentukan

Lampirkan aturan yang bersaing — selector ID dengan (1,0,0) mengalahkan selector kelas dengan (0,1,0):

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

Langkah 5: Timpa dengan Deklarasi Inline

Deklarasi inline membawa prioritas (1,0,0) tingkat inline dan mengalahkan aturan penulis dengan spesifisitas selector apa pun:

inline = el.style
inline.set_property("color", "green")
print(el.get_computed_style().get_property_value("color"))

Masalah Umum dan Solusinya

Selektor yang tampak benar tidak mencocokkan apa pun. Teks selektor dengan kesalahan sintaks gagal diparse — mesin melaporkannya alih-alih menebak; periksa string selektor.

:where() berperilaku berbeda dari :is(). Itu memang disengaja: :where() menyumbang spesifisitas nol, :is() menyumbang spesifisitas argumennya.

Selektor tipe secara tak terduga kalah. Selektor tipe memiliki kelas spesifisitas terendah (0,0,1); aturan kelas atau id apa pun pada elemen yang sama mengungguli mereka.

Pertanyaan yang Sering Diajukan

Apakah saya dapat menjalankan kueri selector tanpa stylesheet?

Ya — select() mengevaluasi selector terhadap pohon secara langsung, dan element_matches() menguji satu elemen.

Bagaimana spesifisitas dihitung?

specificity() mengembalikan tuple standar (id, class, type) yang digunakan oleh kedua kueri dan cascade.

Pseudo-class mana yang dimodelkan?

Bentuk terstruktur ada untuk :is(), :where(), :has(), :not() dengan argumen kompleks, dan selector struktural gaya nth-child.

Lihat Juga

 Bahasa Indonesia