كيفية العمل مع 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: بناء عنصر مُنسق
أنشئ مستندًا وعنصرًا يحتوي على فئة ومعرّف — سيشاركان كلاهما في مطابقة المحددات:
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 (الخصوصية 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().
هل يتم نمذجة قواعد الوسائط، وإطارات المفاتيح، والخطوط؟
نعم — تحتوي الأوراق التي تم تحليلها على قواعد مكتوبة تشمل CSSMediaRule، CSSKeyframesRule، وCSSFontFaceRule في CSSRuleList.