چگونه با 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 دارند.