सीएसएस कक्षाओं को ऑब्जेक्ट ओरिएंटेड क्लासेस के रूप में न समझें , उनके बारे में यह सोचें कि केवल अन्य चयनकर्ताओं के बीच एक टूल यह निर्दिष्ट करने के लिए कि HTML तत्व किस विशेषता वर्ग द्वारा स्टाइल किया गया है। विशेषता वर्ग के रूप में ब्रेसिज़ के बीच सब कुछ के बारे में सोचें , और बाईं ओर के चयनकर्ता उन तत्वों को बताते हैं जो वे विशेषता वर्ग से विशेषताओं को प्राप्त करने के लिए चुनते हैं । उदाहरण:
.foo, .bar { font-weight : bold; font-size : 2em; /* attribute class A */}
.foo { color : green; /* attribute class B */}
जब किसी तत्व को विशेषता दी जाती है class="foo"
, तो यह सोचना उपयोगी होता है कि वह वर्ग से विशेषता नहीं है .foo
, बल्कि विशेषता वर्ग A और विशेषता वर्ग B से है । यानी, वंशानुक्रम ग्राफ एक स्तर गहरा है, जिसमें एलीमेंट क्लासेस से प्राप्त होने वाले तत्व हैं , और चयनकर्ता निर्दिष्ट करते हैं कि एड़ियाँ कहाँ जाती हैं, और प्रतिस्पर्धात्मक विशेषताएँ होने पर पूर्वनिर्धारण का निर्धारण करती हैं (विधि रिज़ॉल्यूशन ऑर्डर के समान)।
प्रोग्रामिंग के लिए व्यावहारिक निहितार्थ यह है। कहें कि आपके पास ऊपर दी गई शैली की शीट है, और एक नया वर्ग जोड़ना चाहते हैं .baz
, जहां यह उसी font-size
तरह होना चाहिए .foo
। भोला समाधान यह होगा:
.foo, .bar { font-weight : bold; font-size : 2em; /* attribute class A */}
.foo { color : green; /* attribute class B */}
.baz { font-size : 2em; /* attribute class C, hidden dependency! */}
किसी भी समय मुझे दो बार कुछ टाइप करना पड़ता है मैं इतना पागल हो जाता हूं! न केवल मुझे इसे दो बार लिखना है, अब मेरे पास प्रोग्राम को इंगित करने का कोई तरीका नहीं है .foo
और .baz
ऐसा ही होना चाहिए font-size
, और मैंने एक छिपी निर्भरता बनाई है ! मेरे उपरोक्त प्रतिमान से यह पता चलता है कि मुझे विशेषता वर्ग Afont-size
से विशेषता को समाप्त करना चाहिए :
.foo, .bar, .baz { font-size : 2em; /* attribute base class for A */}
.foo, .bar { font-weight : bold; /* attribute class A */}
.foo { color : green; /* attribute class B */}
यहां मुख्य शिकायत यह है कि अब मुझे हर चयनकर्ता को विशेषता वर्ग ए से फिर से लिखना होगा ताकि वे बता सकें कि उन्हें जिन तत्वों का चयन करना चाहिए, वे विशेषता आधार वर्ग ए से विशेषता प्राप्त करना चाहिए । फिर भी, विकल्पों को प्रत्येक विशेषता वर्ग को संपादित करने के लिए याद रखना पड़ता है जहां कुछ परिवर्तन होने पर, या किसी तीसरे उपकरण के उपकरण का उपयोग करने के लिए हर बार छिपे हुए निर्भरताएं होती हैं। पहला विकल्प भगवान को हंसाता है, दूसरा मुझे मारना चाहता है।