כיצד לעבוד עם CSSOM ב-Python
Aspose.HTML FOSS עבור Python מיישם את מודל האובייקט של CSS: גללי סגנון מתפרקים לאובייקטי כללים חיי, מצורפים למסמכים, ונפתרים דרך מסדרה אמיתית. מדריך זה מעצב אלמנט וקורא את התוצאה המחושבת, תוך שימוש ב-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 — שניהם ישתתפו בהתאמת סלקטורים:
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)שלב 4: ניתוח והצמדה של גיליון סגנונות
replace_sync() מפרש טקסט של גיליון סגנונות; attach_style_sheet() רושם אותו במסמך:
sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: blue }")
doc.attach_style_sheet(sheet)שלב 5: קריאת הסגנון המחושב
סלקטור ה-ID (specificity 1,0,0) מתעלה על סלקטור המחלקה (0,1,0), ולכן הכחול מנצח:
style = el.get_computed_style()
print(style.get_property_value("color"))בעיות נפוצות ופתרונות
הערך המחושב מתעלם מגיליון הסגנונות שלי. הגיליון חייב להיות מצורף באמצעות Document.attach_style_sheet() before get_computed_style() נקרא.
סגנון פנימי מאבד לכלל מגיליון סגנונות. כללי המחבר המסומנים !important עולים על הצהרות אינליין לא חשובות; בדוק עדיפויות עם get_property_priority().
שני כללים עם אותה ספציפיות מניבים מנצח מפתיע. כללים מאוחרים מנצחים בתיקי ספציפיות שווים — סדר הכללים בתוך הגיליון חשוב.
שאלות נפוצות
איך אני מגדיר סגנונות פנימיים בתכנות?
דרך ההצהרה style של האלמנט: השמתה למשתנה וקרא ל-set_property() עליו.
איזה אובייקט מחזירה get_computed_style?
ComputedStyleDeclaration; קרא ערכים עם get_property_value().
האם כללי media, keyframes, ו-font-face מודלים?
כן — גיליונות מנותחים מכילים כללים מתויגים כולל CSSMediaRule, CSSKeyframesRule, ו-CSSFontFaceRule בCSSRuleList.