CSSOM और गणना किए गए शैलियाँ

CSSOM और गणना किए गए शैलियाँ

CSSOM और गणना किए गए शैलियाँ

CSS ऑब्जेक्ट मॉडल शैलीपत्र पाठ को जीवंत ऑब्जेक्ट्स में बदलता है जो वास्तविक कैस्केड में भाग लेते हैं। CSSStyleSheet नियमों को रखता है, CSSStyleDeclaration गुण घोषणाओं को रखता है, और Element.get_computed_style() समाधानित परिणाम की रिपोर्ट करता है।


स्टाइलशीट्स का पार्सिंग और संलग्न करना

CSSStyleSheet.replace_sync() शैलीपत्र पाठ को पार्स करता है; Document.attach_style_sheet() शीट को पंजीकृत करता है ताकि इसके नियम लागू हों। नियमों को insert_rule(), add_rule(), और remove_rule() के साथ व्यक्तिगत रूप से भी प्रबंधित किया जा सकता है:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red }")
doc.attach_style_sheet(sheet)

नियम परिवार

पार्स किए गए शीट्स में टाइप्ड नियम होते हैं: सामान्य चयनकर्ताओं के लिए CSSStyleRule तथा CSSMediaRule, CSSKeyframesRule, CSSFontFaceRule, CSSSupportsRule, CSSImportRule और पेज/लेयर/नेमस्पेस वैरिएंट्स, जो एक CSSRuleList में संग्रहित हैं। parse_stylesheet() और parse_rule_text() सीधे पार्सिंग लेयर को उजागर करते हैं।

घोषणाएँ और इनलाइन स्टाइल्स

प्रत्येक तत्व की style प्रॉपर्टी एक लाइव CSSStyleDeclaration है: set_property(), get_property_value(), get_property_priority(), और item() पढ़ने और लिखने की घोषणाएँ। इनलाइन घोषणाएँ किसी भी चयनकर्ता विशिष्टता की लेखक नियमों से ऊपर होती हैं:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red }")
doc.attach_style_sheet(sheet)
inline = el.style
inline.set_property("color", "blue")
print(el.get_computed_style().get_property_value("color"))

कैस्केड को हल करना

Element.get_computed_style() एक ComputedStyleDeclaration लौटाता है जो विशिष्टता, महत्व, और विरासत को दर्शाता है। !important चिह्नित एक लेखक नियम गैर-महत्वपूर्ण इनलाइन घोषणा को मात देता है:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red !important }")
doc.attach_style_sheet(sheet)
inline = el.style
inline.set_property("color", "blue")
print(el.get_computed_style().get_property_value("color"))

टिप्स और सर्वोत्तम प्रथाएँ

  • गणना किए गए शैलियों को पढ़ने से पहले शीट्स संलग्न करें — समाधान वर्तमान में संलग्न शीट्स को दर्शाता है
  • अचरजजनक विजेताओं को डिबग करते समय !important की जाँच के लिए get_property_priority() का उपयोग करें
  • प्रत्येक लॉजिकल स्टाइलशीट के लिए एक CSSStyleSheet रखें; CSSRuleList नियम क्रम को संरक्षित करता है, जो समान-विशिष्टता टाई के लिए मायने रखता है
  • विरासत जांचों के लिए, पहले पैरेंट का गणना किया गया मान पढ़ें, फिर चाइल्ड का

सामान्य समस्याएँ

समस्याकारणसमाधान
गणना किया गया मान एक नियम को अनदेखा करता हैशीट कभी संलग्न नहीं होतीकॉल Document.attach_style_sheet()
इनलाइन स्टाइल अप्रत्याशित रूप से खो जाता हैलेखक नियम में !important हैget_property_priority() के साथ निरीक्षण करें
विरासत मान नहीं मिलागुणधर्म विरासत योग्य नहीं है या चाइल्ड में स्थानीय मान हैस्थानीय मान हमेशा विरासत मानों पर जीतते हैं

FAQ

मैं CSS टेक्स्ट को ऑब्जेक्ट्स में कैसे पार्स करूँ?

पूरी शीट्स के लिए CSSStyleSheet.replace_sync(), या एकल नियम के लिए parse_rule_text()।

get_computed_style क्या लौटाता है?

एक ComputedStyleDeclaration — get_property_value() के साथ मान पढ़ें।

क्या इनलाइन स्टाइल्स हमेशा जीतते हैं?

वे किसी भी विशिष्टता वाले ऑथर नियमों को मात देते हैं, लेकिन !important द्वारा चिह्नित ऑथर नियमों के आगे हार जाते हैं।


API Reference सारांश

क्लास/मेथडविवरण
CSSStyleSheet.replace_syncस्थल पर स्टाइलशीट टेक्स्ट को पार्स करें
Document.attach_style_sheetदस्तावेज़ के साथ एक शीट पंजीकृत करें
CSSStyleDeclaration.set_propertyएक घोषणा लिखें
CSSStyleDeclaration.get_property_priority!important के लिए जाँच करें
Element.get_computed_styleएक तत्व के लिए कास्केड को हल करें
parse_stylesheetलो-लेवल स्टाइलशीट पार्सिंग

यह भी देखें

 हिन्दी