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