Πώς να εργαστείτε με Επιλογείς CSS στο Python
Η μηχανή επιλεκτών στο Aspose.HTML FOSS για Python αξιολογεί επιλεκτές κλάσης, id, τύπου, χαρακτηριστικού και ψευδο-κλάσης με προδιαγραφές ειδικότητας. Αυτός ο οδηγός δείχνει την αντιστοίχιση επιλεκτών μέσω της αλυσίδας — η ίδια μηχανή που τροφοδοτεί το select() και το element_matches() — χρησιμοποιώντας pip για εγκατάσταση.
Οδηγός βήμα προς βήμα
Βήμα 1: Εγκατάσταση του πακέτου
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Βήμα 2: Εισαγωγή των απαιτούμενων κλάσεων
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheetΒήμα 3: Δημιουργήστε ένα στοιχείο που ταιριάζει με πολλαπλούς επιλεκτές
Ένα στοιχείο που διαθέτει τόσο κλάση όσο και id ταιριάζει ταυτόχρονα με τους επιλογείς .foo, #bar και div:
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)Βήμα 4: Αφήστε την ειδικότητα να αποφασίσει
Επισυνάψτε ανταγωνιστικούς κανόνες — ο επιλογέας ID με (1,0,0) υπερισχύει του επιλογέα κλάσης με (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"))Βήμα 5: Παράκαμψη με ενσωματωμένη δήλωση
Οι ενσωματωμένες δηλώσεις έχουν προτεραιότητα (1,0,0) σε επίπεδο inline και υπερισχύουν των κανόνων του δημιουργού ανεξαρτήτως ειδικότητας επιλογέα:
inline = el.style
inline.set_property("color", "green")
print(el.get_computed_style().get_property_value("color"))Κοινά προβλήματα και διορθώσεις
Ένας επιλογέας που φαίνεται σωστός δεν ταιριάζει με τίποτα. Το κείμενο του επιλογέα με συντακτικά σφάλματα αποτυγχάνει στην ανάλυση — η μηχανή το αναφέρει αντί να μαντέψει· ελέγξτε τη συμβολοσειρά του επιλογέα.
:where() συμπεριφέρεται διαφορετικά από :is(). Αυτό είναι σχεδιασμένο έτσι: :where() συνεισφέρει μηδενική ειδικότητα, :is() συνεισφέρει του ορίσματος.
Ένας επιλεκτής τύπου χάνει απροσδόκητα. Οι επιλεκτές τύπου έχουν την χαμηλότερη κατηγορία ειδικότητας (0,0,1); οποιοσδήποτε κανόνας κλάσης ή id στο ίδιο στοιχείο τους υπερισχύει.
Συχνές Ερωτήσεις
Μπορώ να εκτελέσω ένα ερώτημα επιλογέα χωρίς φύλλο στυλ;
Ναι — το select() αξιολογεί έναν επιλογέα απέναντι σε ένα δέντρο άμεσα, και το element_matches() δοκιμάζει ένα μοναδικό στοιχείο.
Πώς υπολογίζεται η εξειδίκευση;
Το specificity() επιστρέφει την τυπική πλειάδα (id, class, type) που χρησιμοποιείται τόσο από τα ερωτήματα όσο και από την αλυσίδα.
Ποιες ψευδο-κλάσεις μοντελοποιούνται;
Δομημένες φόρμες υπάρχουν για :is(), :where(), :has(), :not() με σύνθετα επιχειρήματα και επιλογείς δομής τύπου nth-child.