द सीएसएस पॉडकास्ट - 004: The Cascade
सीएसएस का मतलब है कैस्केडिंग स्टाइलशीट. कैसकेड, समस्याओं को हल करने का एल्गोरिदम है. इसमें एचटीएमएल एलिमेंट पर कई सीएसएस नियम लागू होते हैं. यही वजह है कि बटन का टेक्स्ट, नीचे दी गई सीएसएस से स्टाइल किया गया होगा.
button {
color: red;
}
button {
color: blue;
}
कैस्केड एल्गोरिदम को समझने से आपको यह समझने में मदद मिलती है कि ब्राउज़र इस तरह के विवादों को कैसे हल करता है. कैस्केड एल्गोरिदम को चार अलग-अलग चरणों में बांटा गया है.
- रैंक और दिखने का क्रम: आपके सीएसएस नियमों के दिखने का क्रम
- एट्रिब्यूट: यह एक एल्गोरिदम है, जो यह तय करता है कि किस सीएसएस सिलेक्टर का मैच सबसे अच्छा है
- ऑरिजिन: सीएसएस के दिखने का क्रम और वह कहां से आती है, चाहे वह कोई ब्राउज़र स्टाइल हो, सीएसएस, किसी ब्राउज़र एक्सटेंशन या आपकी बनाई गई सीएसएस का है
- अहमियत: सीएसएस के कुछ नियमों को अन्य की तुलना में ज़्यादा अहमियत दी जाती है,
खास तौर पर,
!important
नियम टाइप के साथ
वीडियो के दिखने का क्रम और क्रम
सीएसएस के नियम जिस क्रम में दिखते हैं और वे किस क्रम में दिखते हैं, सभी को कैस्केड में ध्यान में रखा जाता है और यह कॉन्फ़्लिक्ट रिज़ॉल्यूशन को कैलकुलेट करता है.
इस लेसन की शुरुआत में दिया गया डेमो, पोज़िशन का सबसे आसान उदाहरण है. यहां दो नियम हैं, जिनमें एक समान विशेषता वाले सिलेक्टर हैं, इसलिए, आखिरी मैच की जीत हुई.
एचटीएमएल पेज पर स्टाइल अलग-अलग सोर्स से आ सकती हैं,
जैसे कि <link>
टैग,
एम्बेड किया गया <style>
टैग,
और इनलाइन सीएसएस का इस्तेमाल करें, जैसा कि एलिमेंट के style
एट्रिब्यूट में बताया गया है.
अगर आपके पास <link>
है जिसमें आपके एचटीएमएल पेज के सबसे ऊपर सीएसएस शामिल है,
इसके बाद, आपके पेज पर सबसे नीचे सीएसएस वाला कोई दूसरा <link>
: सबसे नीचे मौजूद <link>
की जानकारी सबसे खास होगी.
ऐसा ही, एम्बेड किए गए <style>
एलिमेंट के साथ भी होता है.
वे जानकारी के हिसाब से सटीक होती जाती हैं और पेज पर नीचे की ओर होती जाती हैं.
यह क्रम, एम्बेड किए गए <style>
एलिमेंट पर भी लागू होता है.
अगर इनका एलान <link>
से पहले किया जाता है, तो
लिंक की गई स्टाइलशीट के सीएसएस की सबसे खास बात होगी.
अगर इनलाइन style
एट्रिब्यूट में सीएसएस का एलान किया गया है, तो वह दूसरे सभी सीएसएस को बदल देगा,
चाहे किसी भी स्थिति में हो, जब तक कि किसी एलान में !important
के बारे में न बताया गया हो.
स्थान आपके CSS नियम के क्रम में भी लागू होता है.
इस उदाहरण में, एलिमेंट का बैकग्राउंड बैंगनी रंग का होगा, क्योंकि आखिरी बार background: purple
का एलान किया गया था.
बैंगनी बैकग्राउंड से पहले हरे रंग के बैकग्राउंड का एलान किया गया था, इसलिए ब्राउज़र अब इसे अनदेखा कर देता है.
.my-element {
background: green;
background: purple;
}
एक ही प्रॉपर्टी के लिए दो वैल्यू तय करना
यह ऐसे ब्राउज़र के लिए फ़ॉलबैक बनाने का एक आसान तरीका हो सकता है, जो किसी खास वैल्यू का समर्थन नहीं करते हैं.
इस उदाहरण में, font-size
का एलान दो बार किया गया है.
अगर ब्राउज़र में clamp()
काम करता है, तो
इसके बाद, font-size
से जुड़े एलान को खारिज कर दिया जाएगा.
अगर ब्राउज़र पर clamp()
काम नहीं करता है, तो
शुरुआती एलान के मुताबिक, उसका इस्तेमाल किया जाएगा और उसके फ़ॉन्ट का साइज़ 1.5rem होगा
.my-element {
font-size: 1.5rem;
font-size: clamp(1.5rem, 1rem + 3vw, 2rem);
}
देखें कि आपको कितना समझ आया है
झरने के बारे में अपनी जानकारी को परखें
अगर आपके पेज पर यह एचटीएमएल मौजूद है:
<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="/styles.css" /> </head> <body> <button>I am a button</button> <style> button { background: pink; } </style> </body> </html>
styles.css
के अंदर, नीचे दिया गया सीएसएस नियम मौजूद है:
button { background: yellow; }
बटन का बैकग्राउंड कौनसा रंग है?
<style>
ऑरिजिन, पेज पर
<link>
टैग की खासियत है. इसलिए, button
की खासियत एक जैसी है, लेकिन
स्टाइल के नियम की स्थिति, इसे जीतती है.
खासियत
खासियत एक ऐसा एल्गोरिदम है जिससे यह तय होता है कि कौनसा सीएसएस सिलेक्टर सबसे ज़्यादा सटीक है, वे कैलकुलेशन करने के लिए, वेट या स्कोरिंग सिस्टम का इस्तेमाल किया जा सकता है. नियम को और सटीक बनाकर, आप इसे लागू कर सकते हैं, भले ही सिलेक्टर से मेल खाने वाली कुछ दूसरी सीएसएस, बाद में सीएसएस में दिखती हों.
अगले लेसन में, यह बताया जा सकता है कि किसी विशेषता को कैसे कैलकुलेट किया जाता है. हालांकि, कुछ चीज़ों का ध्यान रखने से, कई गड़बड़ियों से बचा जा सकता है.
किसी एलिमेंट पर क्लास को टारगेट करने वाला सीएसएस, उस नियम को और सटीक बना देगा,
और इसलिए इसे लागू करना ज़्यादा ज़रूरी है.
सिर्फ़ एलिमेंट को टारगेट करने वाले सीएसएस के मुकाबले.
इसका मतलब है कि इस सीएसएस में,
h1
का रंग लाल रहेगा, भले ही दोनों नियम मेल खाते हों और h1
सिलेक्टर का नियम स्टाइलशीट में बाद में आता है.
<h1 class="my-element">Heading</h1>
.my-element {
color: red;
}
h1 {
color: blue;
}
id
, सीएसएस को और सटीक बना देता है,
इसलिए किसी आईडी पर लागू की गई स्टाइल, लागू किए गए दूसरे कई तरीकों की जगह लागू हो जाएंगी.
इस वजह से भी, id
में स्टाइल अटैच करना अच्छा आइडिया नहीं है.
इस वजह से, उस स्टाइल को कुछ और से ओवरराइट करना मुश्किल हो सकता है.
खासियतें जमा होती हैं
जैसा कि आपको अगले लेसन में पता चला है,
हर सिलेक्टर को दिए जाने वाले पॉइंट दिए जाते हैं. इनसे पता चलता है कि वे कितने खास हैं,
किसी एलिमेंट को टारगेट करने के लिए, आपने जिन सिलेक्टर का इस्तेमाल किया है उनके पॉइंट एक साथ जोड़ दिए गए हैं.
इसका मतलब है कि अगर सिलेक्टर सूची के साथ किसी एलिमेंट को टारगेट किया जाता है, जैसे कि
a.my-class.another-class[href]:hover
आपको दूसरी सीएसएस से ओवरराइट करना काफ़ी मुश्किल हो जाता है.
इस वजह से और सीएसएस को फिर से इस्तेमाल करने लायक बनाने के लिए,
अपने सिलेक्टर को जितना हो सके उतना आसान रखें.
एलिमेंट के बारे में जानने के लिए, ज़रूरत के समय सटीक जानकारी देने वाले टूल का इस्तेमाल करें,
हालांकि, अगर हो सके, तो सिलेक्टर की लंबी और खास सूचियों को रीफ़ैक्टर करें.
शुरुआत की जगह
आपने जो सीएसएस लिखा है वह किसी पेज पर लागू की जाने वाली इकलौती सीएसएस नहीं है. कैसकेड, सीएसएस की शुरुआत को ध्यान में रखता है. इस ऑरिजिन में ब्राउज़र की इंटरनल स्टाइलशीट शामिल है, ब्राउज़र एक्सटेंशन या ऑपरेटिंग सिस्टम के ज़रिए जोड़े गए स्टाइल, और आपका लिखा हुआ सीएसएस. सबसे कम सटीक से लेकर सबसे सटीक तक, इन ऑरिजिन की खासियत का क्रम यहां बताया गया है:
- उपयोगकर्ता एजेंट के लिए स्टाइल. ये स्टाइल हैं जिन्हें आपका ब्राउज़र, डिफ़ॉल्ट रूप से एचटीएमएल एलिमेंट पर लागू करता है.
- लोकल यूज़र स्टाइल. ये ऑपरेटिंग सिस्टम लेवल से आ सकते हैं, जैसे कि बेस फ़ॉन्ट साइज़, या कम हलचल को प्राथमिकता दें. ये ब्राउज़र एक्सटेंशन, जैसे कि ब्राउज़र एक्सटेंशन, जिसकी मदद से उपयोगकर्ता किसी वेबपेज के लिए अपनी पसंद के मुताबिक सीएसएस लिख सकता है.
- लिखी गई सीएसएस. वह सीएसएस जिसे आपने लिखा है.
- लिखा गया
!important
. ऐसा कोई भी!important
जिसे आपने लिखे गए एलानों में जोड़ा हो. - लोकल यूज़र स्टाइल
!important
. ऑपरेटिंग सिस्टम लेवल से आने वाला कोई भी!important
, या ब्राउज़र एक्सटेंशन लेवल सीएसएस पर क्लिक करें. - उपयोगकर्ता एजेंट
!important
. डिफ़ॉल्ट सीएसएस में तय किया गया कोई भी!important
, यह विकल्प आपको ब्राउज़र से मिलता है.
अगर आपने उस सीएसएस में !important
नियम टाइप को शामिल किया है जिसे आपने लिखा है
और उपयोगकर्ता के पास उसके कस्टम सीएसएस में किस तरह का !important
नियम है, जिसकी सीएसएस जीतती है?
देखें कि आपको कितना समझ आया है
कैसकेड के मूल स्रोत के बारे में अपनी जानकारी को परखें
कैस्केड के मूल स्रोत के बारे में अपनी जानकारी परखें, इन स्टाइल को अपनाएं ये नियम अलग-अलग ऑरिजिन के हैं:
उपयोगकर्ता-एजेंट की स्टाइल
h1 { margin-block-start: 0.83em; }
बूटस्ट्रैप
h1 { margin-block-start: 20px; }
पेज के लेखक की स्टाइल
h1 { margin-block-start: 2ch; } @media (max-width: 480px) { h1 { margin-block-start: 1ch; } }
उपयोगकर्ता की पसंद के मुताबिक स्टाइल
h1 { margin-block-start: 2rem !important; }
फिर, नीचे दिए गए एचटीएमएल में:
<h1>Lorem ipsum</h1>
h1
का फ़ाइनल margin-block-start
क्या है?
!important
उपयोगकर्ता की पसंद के मुताबिक बनाई गई इस शैली का ऑरिजिन सबसे खास है.अहमियत
सीएसएस के सभी नियमों को एक-दूसरे की तरह कैलकुलेट नहीं किया जाता, या एक-दूसरे की जैसी विशेषता दी गई हो.
ज़रूरी का क्रम, सबसे कम ज़रूरी, यहां दी गई जानकारी सबसे ज़रूरी है:
- सामान्य नियम का टाइप, जैसे कि
font-size
,background
याcolor
animation
नियम का टाइप!important
नियम का टाइप (जिस क्रम में ऑरिजिन का क्रम जाता है उसी का इस्तेमाल किया जाता है)transition
नियम का टाइप
सामान्य नियमों की तुलना में, ऐक्टिव ऐनिमेशन और ट्रांज़िशन के नियम ज़्यादा अहमियत रखते हैं.
ट्रांज़िशन के मामले में, !important
नियम टाइप की तुलना में ज़्यादा अहमियत रखता है.
ऐसा इसलिए होता है, क्योंकि जब कोई ऐनिमेशन या ट्रांज़िशन ऐक्टिव हो जाता है,
हालांकि, इसका असर विज़ुअल स्थिति में बदलाव होना चाहिए.
DevTools का इस्तेमाल करके, यह पता लगाना कि कुछ सीएसएस क्यों लागू नहीं हो रही हैं
ब्राउज़र DevTools आम तौर पर, ऐसे सभी सीएसएस दिखाएगा जो किसी एलिमेंट से मैच कर सकते हैं, जिन्हें हटाया नहीं जा रहा है.
अगर वह सीएसएस नहीं दिखता जिसे आपको लागू करना था, तो तो वह एलिमेंट से मेल नहीं खाता. उस स्थिति में आपको कहीं और देखना होगा, शायद किसी क्लास या एलिमेंट का नाम लिखने में हुई गड़बड़ी या अमान्य सीएसएस की वजह से.
देखें कि आपको कितना समझ आया है
झरने के बारे में अपनी जानकारी को परखें
Cascade का इस्तेमाल इन चीज़ों के लिए किया जा सकता है...