วิธีทำงานกับ CSSOM ใน Python

วิธีทำงานกับ CSSOM ใน Python

Aspose.HTML FOSS สำหรับ Python ใช้โมเดลวัตถุ CSS: stylesheets แปลงเป็น live rule objects, แนบกับ documents, และ resolve ผ่าน real cascade. คู่มือนี้กำหนดสไตล์ให้กับ element และอ่านผลลัพธ์ที่คำนวณได้, โดยใช้ 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: วิเคราะห์และแนบ Stylesheet

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"))

ปัญหาที่พบบ่อยและการแก้ไข

ค่าที่คำนวณได้ละเลย stylesheet ของฉัน. ชีตต้องแนบผ่าน Document.attach_style_sheet() before get_computed_style() ถูกเรียกว่า.

สไตล์อินไลน์พ่ายแพ้ต่อกฎของ stylesheet. กฎของผู้เขียนที่ทำเครื่องหมาย !important เหนือการประกาศ inline ที่ไม่สำคัญ; ตรวจสอบลำดับความสำคัญด้วย get_property_priority().

กฎสองข้อที่มี specificity เดียวกันให้ผลลัพธ์ที่น่าประหลาดใจ. กฎที่ตามมาชนะการเสมอเมื่อ specificity เท่ากัน — ลำดับของกฎภายใน sheet มีความสำคัญ.

คำถามที่พบบ่อย

ฉันจะตั้งค่าสไตล์อินไลน์โปรแกรมเมติกได้อย่างไร?

ผ่านการประกาศ style ขององค์ประกอบ: กำหนดค่าให้ตัวแปรและเรียก set_property() กับมัน.

วัตถุใดที่ get_computed_style คืนค่า?

อ็อบเจ็กต์ ComputedStyleDeclaration; อ่านค่าโดยใช้ get_property_value().

กฎ media, keyframes, และ font-face ถูกจำลองหรือไม่?

ใช่ — แผ่นที่แยกวิเคราะห์ประกอบด้วยกฎที่พิมพ์ประเภทรวมถึง CSSMediaRule, CSSKeyframesRule และ CSSFontFaceRule ใน CSSRuleList.

ดูเพิ่มเติม

 ภาษาไทย