چگونه با CSSOM در Python کار کنیم

چگونه با CSSOM در Python کار کنیم

Aspose.HTML FOSS برای Python مدل شیء CSS را پیاده‌سازی می‌کند: سبک‌نامه‌ها به اشیای قانون زنده تجزیه می‌شوند، به اسناد متصل می‌شوند، و از طریق یک سلسله‌مراتب واقعی حل می‌شوند. این راهنما یک عنصر را استایل می‌دهد و نتیجه محاسبه‌شده را می‌خواند، با استفاده از pip برای نصب.

راهنمای گام به گام

گام ۱: نصب بسته

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

گام ۲: وارد کردن کلاس‌های مورد نیاز

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

گام ۳: ساخت یک عنصر استایل‌دار

یک سند و عنصری با کلاس و شناسه ایجاد کنید — هر دو در تطبیق سلکتور شرکت می‌کنند:

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: خواندن سبک محاسبه‌شده

سلکتور شناسه (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 دارند.

همچنین ببینید:

 فارسی