วิธีทำงานกับ 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.