Hogyan dolgozzunk CSS szelektorokkal a Python-ben

Hogyan dolgozzunk CSS szelektorokkal a Python-ben

A Aspose.HTML FOSS Python számára készült szelektor motorja értékeli az osztály, az azonosító, a típus, az attribútum és a pszeudo-osztály szelektorokat a szabványos specifikussággal. Ez az útmutató bemutatja a szelektorok egyezését a kaszkádon keresztül — ugyanaz a motor, amely a select() és a element_matches() mögött áll — a pip használatával a telepítéshez.

Lépésről lépésre útmutató

1. lépés: A csomag telepítése

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

2. lépés: A szükséges osztályok importálása

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

3. lépés: Olyan elem létrehozása, amelyre több szelektor is illeszkedik

Egy elem, amely egyszerre osztályt és azonosítót (id) tartalmaz, egyszerre a .foo, #bar és div szelektorok által egyezik:

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

4. lépés: Hagyja, hogy a specifikusság döntse el

Csatolja a versengő szabályokat — az ID szelektor (1,0,0) felülírja az osztály szelektor (0,1,0) értékét:

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

5. lépés: Felülírás inline deklarációval

Az inline deklarációk (1,0,0) inline szintű prioritással rendelkeznek, és felülbírálják a szerző szabályait bármely szelektor specifikusságával szemben:

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

Gyakori problémák és megoldások

A helyesnek tűnő selector semmit sem egyeztet. A szintaxis hibákkal rendelkező selector szöveg nem sikerül a feldolgozásban — a motor jelenti, ahelyett, hogy tippelne; ellenőrizd a selector stringet.

:where() másként viselkedik, mint a :is(). Ez a tervezés része: :where() nulla specifikusságot ad hozzá, :is() az argumentumának a specifikusságát adja hozzá.

Egy típus selector váratlanul veszít. A típus selectorok a legalacsonyabb specifikussági osztályba tartoznak (0,0,1); bármely class vagy id szabály ugyanazon az elemen felülírja őket.

Gyakran feltett kérdések

Futtathatok egy selector lekérdezést stíluslap nélkül?

Igen — select() közvetlenül egy fán értékeli a selectort, és element_matches() egyetlen elemet tesztel.

Hogyan számítják ki a specificitást?

specificity() visszaadja a standard (id, class, type) tuple-ot, amelyet mind a lekérdezések, mind a kaszkád használ.

Mely pseudo-osztályok vannak modellezve?

Strukturált űrlapok léteznek a :is(), :where(), :has(), :not() esetén összetett argumentumokkal, valamint nth-child-stílusú szerkezeti szelektorokkal.

Lásd még:

 Magyar