CSS @when नियमाबद्दल जाणून घ्या, हे एक शक्तिशाली फीचर आहे जे ब्राउझर सपोर्ट, व्ह्यूपोर्ट आकार आणि बरेच काही यावर आधारित कंडिशनल स्टाईल ऍप्लिकेशन सक्षम करते. व्यावहारिक उदाहरणांसह शिका.
CSS @when नियम: कंडिशनल स्टाईल ऍप्लिकेशनमध्ये प्रभुत्व
CSS चे जग सतत विकसित होत आहे, जे डेव्हलपर्सना वेब पेजेस स्टाईल करण्याचे अधिक शक्तिशाली आणि लवचिक मार्ग उपलब्ध करून देत आहे. असेच एक वैशिष्ट्य जे लोकप्रिय होत आहे ते म्हणजे @when
नियम, ज्याला CSS कंडिशनल रूल्स मॉड्यूल लेव्हल 1 असेही म्हणतात. हा नियम तुम्हाला विशिष्ट अटी पूर्ण झाल्यावर कंडिशनली CSS स्टाईल्स लागू करण्याची परवानगी देतो. रिस्पॉन्सिव्ह डिझाइन, फीचर डिटेक्शन आणि अधिक मजबूत व जुळवून घेण्यायोग्य स्टाईलशीट्स तयार करण्यासाठी हे एक शक्तिशाली साधन आहे.
CSS @when नियम काय आहे?
@when
नियम हा CSS मधील एक कंडिशनल ॲट-रूल आहे जो तुम्हाला काही अटी सत्य असल्यावरच लागू होणाऱ्या स्टाईल्स परिभाषित करण्याची परवानगी देतो. याला तुमच्या CSS साठी एक if
स्टेटमेंट समजा. मीडिया क्वेरीज, जे प्रामुख्याने व्ह्यूपोर्टच्या वैशिष्ट्यांवर (स्क्रीनचा आकार, ओरिएंटेशन इत्यादी) लक्ष केंद्रित करतात, त्यांच्या विपरीत @when
कंडिशनल स्टायलिंग हाताळण्यासाठी अधिक सामान्य आणि विस्तारीत मार्ग प्रदान करतो. हे @supports
आणि @media
सारख्या विद्यमान कंडिशनल ॲट-रूल्सचा विस्तार करते.
@when वापरण्याचे मुख्य फायदे
- सुधारित कोड वाचनीयता:
@when
ब्लॉक्समध्ये कंडिशनल लॉजिक समाविष्ट केल्याने, तुमचा CSS समजण्यास आणि देखरेख करण्यास सोपा होतो. विशिष्ट स्टाईल ऍप्लिकेशन्समागील हेतू अधिक स्पष्ट होतो. - वाढीव लवचिकता:
@when
पारंपारिक मीडिया क्वेरीजपेक्षा अधिक जटिल अटी हाताळू शकतो, विशेषतः जेव्हा फीचर क्वेरीज आणि जावास्क्रिप्ट-चालित लॉजिक (CSS कस्टम प्रॉपर्टीज वापरून) एकत्र केले जाते. - सोपे फीचर डिटेक्शन:
@when
हे@supports
सह अखंडपणे समाकलित होते, ज्यामुळे तुम्हाला विशिष्ट ब्राउझर फीचर्स उपलब्ध असतानाच स्टाईल्स लागू करण्याची परवानगी मिळते. प्रोग्रेसिव्ह एनहान्समेंटसाठी हे महत्त्वपूर्ण आहे. - अधिक सिमेंटिक स्टायलिंग:
@when
तुम्हाला घटकांना त्यांच्या स्थिती किंवा संदर्भावर आधारित स्टाईल करण्याची परवानगी देतो, ज्यामुळे अधिक सिमेंटिक आणि देखरेख करण्यायोग्य CSS तयार होतो. उदाहरणार्थ, जावास्क्रिप्टद्वारे सेट केलेल्या डेटा ॲट्रिब्यूट्स किंवा कस्टम प्रॉपर्टीजवर आधारित घटकांची स्टायलिंग.
@when नियमाचे सिंटॅक्स
@when
नियमाचे मूळ सिंटॅक्स खालीलप्रमाणे आहे:
@when <condition> {
/* अट सत्य असताना लागू होणारे CSS नियम */
}
<condition>
ही कोणतीही वैध बूलियन अभिव्यक्ती असू शकते जी सत्य किंवा असत्य म्हणून मूल्यांकन करते. या अभिव्यक्तीमध्ये अनेकदा यांचा समावेश असतो:
- मीडिया क्वेरीज: व्ह्यूपोर्ट वैशिष्ट्यांवर आधारित अटी (उदा. स्क्रीनची रुंदी, डिव्हाइस ओरिएंटेशन).
- फीचर क्वेरीज (@supports): विशिष्ट CSS फीचर्ससाठी ब्राउझर समर्थनावर आधारित अटी.
- बूलियन अल्जेब्रा: लॉजिकल ऑपरेटर्स (
and
,or
,not
) वापरून अनेक अटी एकत्र करणे.
@when चे प्रत्यक्ष वापरातील व्यावहारिक उदाहरणे
चला@when
नियमाची शक्ती आणि अष्टपैलुत्व दर्शविण्यासाठी काही व्यावहारिक उदाहरणे पाहूया.
१. @when आणि मीडिया क्वेरीजसह रिस्पॉन्सिव्ह डिझाइन
@when
चा सर्वात सामान्य उपयोग रिस्पॉन्सिव्ह डिझाइनसाठी आहे, जिथे तुम्ही स्क्रीनच्या आकारानुसार स्टाईल्स समायोजित करता. मीडिया क्वेरीज हे स्वतः करू शकतात, तरीही @when
एक अधिक संरचित आणि वाचनीय दृष्टिकोन प्रदान करतो, विशेषतः जेव्हा जटिल अटी हाताळायच्या असतात.
@when (min-width: 768px) and (max-width: 1023px) {
body {
font-size: 18px;
line-height: 1.6;
}
.container {
width: 720px;
margin: 0 auto;
}
}
या उदाहरणात, @when
ब्लॉकमधील स्टाईल्स फक्त तेव्हाच लागू होतात जेव्हा स्क्रीनची रुंदी 768px आणि 1023px (सर्वसाधारण टॅब्लेटचा आकार) दरम्यान असते. हे विशिष्ट व्ह्यूपोर्ट रेंजसाठी स्टाईल्स परिभाषित करण्याचा एक स्पष्ट आणि संक्षिप्त मार्ग प्रदान करते.
आंतरराष्ट्रीयीकरणाची नोंद: जागतिक प्रेक्षकांसाठी रिस्पॉन्सिव्ह डिझाइन महत्त्वपूर्ण आहे. वेगवेगळ्या प्रदेशांमध्ये विविध स्क्रीन आकारांचा विचार करा. उदाहरणार्थ, काही देशांमध्ये मोबाईलचा वापर जास्त आहे, ज्यामुळे मोबाईल-फर्स्ट डिझाइन अधिक महत्त्वाचे बनते.
२. @when आणि @supports सह फीचर डिटेक्शन
@when
ला @supports
सोबत वापरून स्टाईल्स फक्त तेव्हाच लागू करता येतात जेव्हा ब्राउझरमध्ये विशिष्ट CSS फीचरला सपोर्ट असतो. हे तुम्हाला तुमच्या वेबसाइटला प्रोग्रेसिव्हली सुधारण्याची संधी देते, ज्यामुळे आधुनिक ब्राउझर वापरणाऱ्या वापरकर्त्यांना चांगला अनुभव मिळतो आणि जुन्या ब्राउझरसोबत सुसंगतता टिकवून ठेवली जाते.
@when supports(display: grid) {
.container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
grid-gap: 20px;
}
}
@when not supports(display: grid) {
.container {
/* ग्रिडला सपोर्ट न करणाऱ्या ब्राउझरसाठी फॉलबॅक स्टाईल्स */
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.item {
width: calc(50% - 10px); /* जुन्या ब्राउझरसाठी रुंदी समायोजित करा */
}
}
येथे, ब्राउझर CSS ग्रिड लेआउटला सपोर्ट करतो की नाही हे तपासण्यासाठी आम्ही @supports
वापरतो. जर तो सपोर्ट करत असेल, तर आम्ही .container
ला ग्रिड-आधारित स्टाईल्स लागू करतो. जर नाही, तर जुन्या ब्राउझरमध्ये समान लेआउट मिळवण्यासाठी आम्ही फ्लेक्सबॉक्स वापरून फॉलबॅक स्टाईल्स प्रदान करतो.
जागतिक ॲक्सेसिबिलिटीची नोंद: ॲक्सेसिबिलिटीसाठी फीचर डिटेक्शन महत्त्वाचे आहे. जुन्या ब्राउझरमध्ये नवीन ARIA ॲट्रिब्यूट्स किंवा सिमेंटिक HTML5 घटकांसाठी सपोर्ट नसू शकतो. मजकूर ॲक्सेसिबल राहील याची खात्री करण्यासाठी योग्य फॉलबॅक प्रदान करा.
३. मीडिया क्वेरीज आणि फीचर क्वेरीज एकत्र करणे
@when
ची खरी शक्ती मीडिया क्वेरीज आणि फीचर क्वेरीज एकत्र करून अधिक जटिल आणि सूक्ष्म कंडिशनल स्टायलिंग नियम तयार करण्याच्या क्षमतेमध्ये आहे.
@when (min-width: 768px) and supports(backdrop-filter: blur(10px)) {
.modal {
background-color: rgba(255, 255, 255, 0.8);
backdrop-filter: blur(10px);
}
}
या उदाहरणात, .modal
घटकाला फक्त तेव्हाच धूसर बॅकड्रॉप मिळेल जेव्हा स्क्रीनची रुंदी किमान 768px असेल आणि ब्राउझर backdrop-filter
प्रॉपर्टीला सपोर्ट करत असेल. हे तुम्हाला जुन्या ब्राउझरवरील संभाव्य परफॉर्मन्स समस्या किंवा रेंडरिंग त्रुटी टाळून आधुनिक ब्राउझरवर दृष्यदृष्ट्या आकर्षक इफेक्ट्स तयार करण्याची परवानगी देते.
४. कस्टम प्रॉपर्टीज (CSS व्हेरिएबल्स) वर आधारित स्टायलिंग
@when
चा वापर CSS कस्टम प्रॉपर्टीज (ज्याला CSS व्हेरिएबल्स असेही म्हणतात) सोबत डायनॅमिक आणि स्टेट-ड्रिव्हन स्टायलिंग तयार करण्यासाठी केला जाऊ शकतो. तुम्ही कस्टम प्रॉपर्टीचे मूल्य अपडेट करण्यासाठी जावास्क्रिप्ट वापरू शकता आणि नंतर त्या मूल्यावर आधारित भिन्न स्टाईल्स लागू करण्यासाठी @when
वापरू शकता.
प्रथम, एक कस्टम प्रॉपर्टी परिभाषित करा:
:root {
--theme-color: #007bff; /* डीफॉल्ट थीम रंग */
--is-dark-mode: false;
}
नंतर, कस्टम प्रॉपर्टीच्या मूल्यावर आधारित स्टाईल्स लागू करण्यासाठी @when
वापरा:
@when var(--is-dark-mode) = true {
body {
background-color: #333;
color: #fff;
}
a {
color: #ccc;
}
}
शेवटी, --is-dark-mode
कस्टम प्रॉपर्टीचे मूल्य टॉगल करण्यासाठी जावास्क्रिप्ट वापरा:
document.getElementById('darkModeToggle').addEventListener('click', function() {
document.documentElement.style.setProperty('--is-dark-mode', this.checked);
});
हे वापरकर्त्यांना लाईट आणि डार्क थीम्समध्ये स्विच करण्याची परवानगी देते, जिथे CSS कस्टम प्रॉपर्टी मूल्याच्या आधारावर डायनॅमिकरित्या अपडेट होते. लक्षात घ्या की `@when` मध्ये CSS व्हेरिएबल्सची थेट तुलना सर्व ब्राउझरमध्ये सार्वत्रिकपणे समर्थित नसू शकते. त्याऐवजी, तुम्हाला शून्य-नसलेल्या मूल्याची तपासणी करणाऱ्या मीडिया क्वेरीसह वर्कअराउंड वापरण्याची आवश्यकता असू शकते:
@when ( --is-dark-mode > 0 ) { ... }
तथापि, हे योग्यरित्या कार्य करण्यासाठी कस्टम प्रॉपर्टीमध्ये अंकीय मूल्य असल्याची खात्री करा.
ॲक्सेसिबिलिटीची नोंद: पर्यायी थीम्स (उदा. डार्क मोड) प्रदान करणे ॲक्सेसिबिलिटीसाठी महत्त्वाचे आहे. दृष्टीदोष असलेल्या वापरकर्त्यांना उच्च-कॉन्ट्रास्ट थीम्सचा फायदा होऊ शकतो. तुमची थीम स्विच कीबोर्ड आणि स्क्रीन रीडरद्वारे ॲक्सेसिबल असल्याची खात्री करा.
५. डेटा ॲट्रिब्यूट्सवर आधारित स्टायलिंग
तुम्ही डेटा ॲट्रिब्यूट्ससह @when
चा वापर घटकांना त्यांच्या डेटा मूल्यांवर आधारित स्टाईल करण्यासाठी देखील करू शकता. डायनॅमिक इंटरफेस तयार करण्यासाठी हे उपयुक्त ठरू शकते जिथे वापरकर्त्याच्या परस्परसंवाद किंवा डेटा अपडेट्सवर आधारित घटकांचे स्वरूप बदलते.
उदाहरणार्थ, समजा तुमच्याकडे कामांची एक यादी आहे, आणि प्रत्येक कामाला एक data-status
ॲट्रिब्यूट आहे जो त्याची स्थिती दर्शवतो (उदा. "todo", "in-progress", "completed"). तुम्ही प्रत्येक कामाला त्याच्या स्थितीनुसार वेगळी स्टाईल देण्यासाठी @when
वापरू शकता.
[data-status="todo"] {
/* todo कामांसाठी डीफॉल्ट स्टाईल्स */
color: #333;
}
@when attribute(data-status string equals "in-progress") {
[data-status="in-progress"] {
color: orange;
font-style: italic;
}
}
@when attribute(data-status string equals "completed") {
[data-status="completed"] {
color: green;
text-decoration: line-through;
}
}
टीप: attribute() चाचणी अटीसाठी समर्थन सध्या सर्व ब्राउझरमध्ये मर्यादित किंवा पूर्णपणे लागू केलेले नसू शकते. नेहमी पूर्णपणे चाचणी करा.
ब्राउझर कंपॅटिबिलिटी आणि पॉलीఫિલ્સ
२०२४ च्या उत्तरार्धात, @when
नियमासाठी ब्राउझर समर्थन अजूनही विकसित होत आहे. अनेक आधुनिक ब्राउझर मूळ कार्यक्षमतेला समर्थन देत असले तरी, काही जुने ब्राउझर कदाचित देत नसतील. म्हणून, कंपॅटिबिलिटी टेबल तपासणे आणि आवश्यकतेनुसार योग्य फॉलबॅक किंवा पॉलीఫિલ્સ वापरणे महत्त्वाचे आहे.
@when
आणि संबंधित फीचर्सची सद्य ब्राउझर समर्थन स्थिती तपासण्यासाठी नेहमी Can I use... सारख्या संसाधनांचा सल्ला घ्या.
@when वापरण्यासाठी सर्वोत्तम पद्धती
- अटी सोप्या ठेवा:
@when
ब्लॉक्समध्ये जास्त गुंतागुंतीच्या अटी टाळा. जटिल लॉजिक लहान, अधिक व्यवस्थापनीय भागांमध्ये विभाजित करा. - फॉलबॅक द्या: तुमच्या
@when
नियमांमध्ये वापरलेल्या फीचर्सना समर्थन न देणाऱ्या ब्राउझरसाठी नेहमी फॉलबॅक स्टाईल्स द्या. हे विविध ब्राउझरमध्ये सातत्यपूर्ण अनुभव सुनिश्चित करते. - पूर्णपणे चाचणी करा: तुमचे
@when
नियम अपेक्षेप्रमाणे काम करत आहेत याची खात्री करण्यासाठी विविध ब्राउझर आणि डिव्हाइसेसवर तुमच्या CSS ची चाचणी करा. - अर्थपूर्ण कमेंट्स वापरा: प्रत्येक
@when
नियमाचा उद्देश आणि तो ज्या अटींवर आधारित आहे ते स्पष्ट करण्यासाठी तुमच्या CSS मध्ये कमेंट्स जोडा. यामुळे तुमचा कोड समजण्यास आणि देखरेख करण्यास सोपे होईल. - परफॉर्मन्सचा विचार करा:
@when
नियमांचा जास्त वापर टाळा, कारण ते संभाव्यतः परफॉर्मन्सवर परिणाम करू शकतात. मूल्यांकन कराव्या लागणाऱ्या नियमांची संख्या कमी करण्यासाठी तुमच्या CSS ला ऑप्टिमाइझ करा.
निष्कर्ष
@when
नियम CSS टूलबॉक्समध्ये एक शक्तिशाली भर आहे, जो डेव्हलपर्सना कंडिशनली स्टाईल्स लागू करण्याचा अधिक लवचिक आणि प्रभावी मार्ग देतो. याला मीडिया क्वेरीज, फीचर क्वेरीज आणि CSS कस्टम प्रॉपर्टीजसह एकत्र करून, तुम्ही अधिक मजबूत, जुळवून घेण्यायोग्य आणि देखरेख करण्यायोग्य स्टाईलशीट्स तयार करू शकता. ब्राउझर समर्थन अजूनही विकसित होत असले तरी, @when
हे एक वैशिष्ट्य आहे जे तुमच्या आधुनिक वेब डेव्हलपमेंट वर्कफ्लोमध्ये शोधण्यासारखे आणि समाविष्ट करण्यासारखे आहे.
जसजसे वेब विकसित होत राहील, तसतसे जगभरातील वापरकर्त्यांसाठी आकर्षक, ॲक्सेसिबल आणि कार्यक्षम अनुभव तयार करण्यासाठी @when
सारख्या वैशिष्ट्यांवर प्रभुत्व मिळवणे आवश्यक असेल. कंडिशनल स्टायलिंगची शक्ती स्वीकारा आणि तुमच्या CSS डेव्हलपमेंटमध्ये नवीन शक्यता अनलॉक करा.