टेलविंड CSS वेरिएंट्स पर हमारी व्यापक गाइड के साथ इंटरैक्टिव UI की पूरी क्षमता को अनलॉक करें। स्यूडो-क्लास, स्टेट, ग्रुप और पीयर स्टाइलिंग सीखें।
टेलविंड CSS वेरिएंट्स में महारत हासिल करना: स्यूडो-क्लास और स्टेट स्टाइलिंग का एक गहन विश्लेषण
आधुनिक वेब डेवलपमेंट में, ऐसे यूजर इंटरफेस बनाना जो न केवल दिखने में आकर्षक हों, बल्कि उपयोगकर्ता की सहभागिता के प्रति गतिशील और उत्तरदायी भी हों, सर्वोपरि है। यहीं पर टेलविंड CSS जैसे यूटिलिटी-फर्स्ट फ्रेमवर्क की असली ताकत चमकती है। जबकि इसकी यूटिलिटी क्लासेस 'क्या' प्रदान करती हैं — लागू करने के लिए विशिष्ट स्टाइल नियम — इसके वेरिएंट्स महत्वपूर्ण 'कब' प्रदान करते हैं।
वेरिएंट्स वह गुप्त सामग्री हैं जो स्थिर डिज़ाइनों को इंटरैक्टिव अनुभवों में बदल देती हैं। ये विशेष प्रीफिक्स हैं जो आपको एलिमेंट की स्थिति, उपयोगकर्ता की बातचीत, या किसी दूसरे एलिमेंट की स्थिति के आधार पर सशर्त रूप से यूटिलिटी क्लासेस लागू करने की अनुमति देते हैं। चाहे वह हॉवर पर बटन का रंग बदलना हो, फोकस होने पर फॉर्म इनपुट को स्टाइल करना हो, या चेकबॉक्स के चेक होने पर संदेश दिखाना हो, वेरिएंट्स ही इन कामों के लिए सही उपकरण हैं।
यह व्यापक गाइड दुनिया भर के डेवलपर्स के लिए डिज़ाइन की गई है। हम टेलविंड CSS वेरिएंट्स के पूरे स्पेक्ट्रम का पता लगाएंगे, जिसमें hover
और focus
जैसी मूलभूत स्यूडो-क्लासेस से लेकर जटिल कंपोनेंट इंटरैक्शन के लिए group
और peer
का उपयोग करने वाली उन्नत तकनीकों तक शामिल हैं। अंत तक, आपके पास पूरी तरह से अपने HTML के भीतर परिष्कृत, स्टेट-अवेयर इंटरफेस बनाने का ज्ञान होगा।
मूल अवधारणा को समझना: वेरिएंट्स क्या हैं?
अपने मूल में, टेलविंड CSS में एक वेरिएंट एक प्रीफिक्स है जिसे आप एक यूटिलिटी क्लास में जोड़ते हैं, जिसे कोलन (:
) से अलग किया जाता है। यह प्रीफिक्स एक शर्त के रूप में कार्य करता है। इससे पहले आने वाली यूटिलिटी क्लास केवल तभी लागू होगी जब वह शर्त पूरी होगी।
मूल सिंटैक्स सरल और सहज है:
variant:utility-class
उदाहरण के लिए, एक साधारण बटन पर विचार करें। आप चाह सकते हैं कि इसका बैकग्राउंड डिफ़ॉल्ट रूप से नीला हो, लेकिन जब कोई उपयोगकर्ता उस पर अपना माउस घुमाए तो यह गहरा नीला हो जाए। पारंपरिक CSS में, आप लिखेंगे:
.my-button {
background-color: #3b82f6; /* bg-blue-500 */
}
.my-button:hover {
background-color: #2563eb; /* bg-blue-700 */
}
टेलविंड के वेरिएंट्स के साथ, आप सीधे अपने HTML में वही परिणाम प्राप्त करते हैं, जिससे आपकी स्टाइलिंग आपके मार्कअप के साथ ही रहती है:
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
Click me
</button>
यहां, hover:
वेरिएंट है। यह टेलविंड के जस्ट-इन-टाइम (JIT) इंजन को एक CSS नियम बनाने के लिए कहता है जो bg-blue-700
को केवल तभी लागू करता है जब बटन अपनी :hover
स्थिति में हो। यह सरल लेकिन शक्तिशाली अवधारणा टेलविंड CSS में सभी इंटरैक्टिव स्टाइलिंग का आधार है।
सबसे आम वेरिएंट्स: इंटरैक्टिव स्यूडो-क्लासेस
स्यूडो-क्लासेस CSS सिलेक्टर्स हैं जो किसी एलिमेंट की एक विशेष स्थिति को परिभाषित करते हैं। टेलविंड उन सभी सामान्य स्यूडो-क्लासेस के लिए वेरिएंट्स प्रदान करता है जिनका आप उपयोगकर्ता की क्रियाओं पर प्रतिक्रिया देने के लिए दैनिक उपयोग करते हैं।
hover
वेरिएंट: माउस कर्सर पर प्रतिक्रिया देना
hover
वेरिएंट यकीनन सबसे अधिक बार उपयोग किया जाने वाला वेरिएंट है। यह तब स्टाइल लागू करता है जब उपयोगकर्ता का कर्सर किसी एलिमेंट पर होता है। यह लिंक, बटन, कार्ड और किसी भी अन्य क्लिक करने योग्य एलिमेंट पर विज़ुअल फीडबैक प्रदान करने के लिए आवश्यक है।
उदाहरण: एक इंटरैक्टिव कार्ड कंपोनेंट
आइए एक ऐसा कार्ड बनाएं जो हॉवर करने पर ऊपर उठता है और एक अधिक प्रमुख शैडो प्राप्त करता है, जो आधुनिक UI डिज़ाइन में एक सामान्य पैटर्न है।
<div class="p-6 max-w-sm mx-auto bg-white rounded-xl shadow-md
transition-all duration-300
hover:shadow-xl hover:-translate-y-1">
<h3 class="text-xl font-medium text-black">Global Insights</h3>
<p class="text-slate-500">Discover trends from around the world.</p>
</div>
इस उदाहरण में:
hover:shadow-xl
हॉवर पर बॉक्स-शैडो को एक बड़े शैडो में बदल देता है।hover:-translate-y-1
कार्ड को थोड़ा ऊपर ले जाता है, जिससे एक "उठाने" का प्रभाव पैदा होता है।- हमने स्थिति परिवर्तन को सहज और एनिमेटेड बनाने के लिए
transition-all
औरduration-300
जोड़ा है।
focus
वेरिएंट: एक्सेसिबिलिटी और इनपुट के लिए स्टाइलिंग
focus
वेरिएंट एक्सेसिबिलिटी के लिए महत्वपूर्ण है। यह तब स्टाइल लागू करता है जब कोई एलिमेंट चुना जाता है, या तो माउस से उस पर क्लिक करके या कीबोर्ड का उपयोग करके उस तक नेविगेट करके (उदाहरण के लिए, 'Tab' कुंजी के साथ)। इसका सबसे अधिक उपयोग फॉर्म एलिमेंट्स जैसे इनपुट, टेक्स्टएरिया और बटन पर किया जाता है।
उदाहरण: एक अच्छी तरह से स्टाइल किया गया फॉर्म इनपुट
एक स्पष्ट फोकस स्थिति उपयोगकर्ताओं को बताती है कि वे पेज पर ठीक कहाँ हैं, जो केवल-कीबोर्ड नेविगेशन के लिए महत्वपूर्ण है।
<label for="email" class="block text-sm font-medium text-gray-700">Email Address</label>
<input type="email" id="email"
class="mt-1 block w-full px-3 py-2 bg-white border border-slate-300 rounded-md
text-sm shadow-sm placeholder-slate-400
focus:outline-none focus:border-sky-500 focus:ring-1 focus:ring-sky-500">
यहाँ focus:
वेरिएंट्स क्या करते हैं:
focus:outline-none
: ब्राउज़र की डिफ़ॉल्ट फोकस आउटलाइन को हटा देता है। हम ऐसा इसलिए करते हैं ताकि इसे अपनी, अधिक आकर्षक स्टाइल से बदल सकें।focus:border-sky-500
: बॉर्डर का रंग चमकीले आसमानी नीले रंग में बदल देता है।focus:ring-1 focus:ring-sky-500
: उसी रंग की एक सूक्ष्म बाहरी चमक (एक बॉक्स-शैडो रिंग) जोड़ता है, जिससे फोकस स्थिति और भी प्रमुख हो जाती है।
active
वेरिएंट: क्लिक्स और टैप्स को कैप्चर करना
active
वेरिएंट तब लागू होता है जब कोई एलिमेंट उपयोगकर्ता द्वारा सक्रिय किया जा रहा हो — उदाहरण के लिए, जब एक बटन दबाया जा रहा हो। यह तत्काल प्रतिक्रिया प्रदान करता है कि क्लिक या टैप पंजीकृत हो गया है।
उदाहरण: एक "दबा हुआ" प्रभाव वाला बटन
<button class="bg-indigo-500 text-white font-semibold py-2 px-4 rounded-lg
shadow-md hover:bg-indigo-600 focus:outline-none
focus:ring-2 focus:ring-indigo-400 focus:ring-opacity-75
active:bg-indigo-700 active:translate-y-0.5">
Submit
</button>
इस उन्नत बटन में:
active:bg-indigo-700
बटन को दबाए जाने के दौरान और भी गहरा बना देता है।active:translate-y-0.5
बटन को थोड़ा नीचे धकेलता है, जिससे एक भौतिक प्रेस-डाउन प्रभाव पैदा होता है।
अन्य इंटरैक्टिव वेरिएंट्स: focus-within
और focus-visible
focus-within
: यह उपयोगी वेरिएंट एक *पैरेंट* एलिमेंट पर स्टाइल लागू करता है जब भी उसका कोई *चाइल्ड* एलिमेंट फोकस प्राप्त करता है। यह एक पूरे फॉर्म ग्रुप को स्टाइल करने के लिए एकदम सही है जब उपयोगकर्ता उसके इनपुट के साथ इंटरैक्ट कर रहा हो।
<div class="flex items-center space-x-2 p-4 border rounded-lg focus-within:border-blue-500 focus-within:ring-1 focus-within:ring-blue-500">
<!-- SVG Icon -->
<svg class="h-6 w-6 text-gray-400">...</svg>
<input type="text" placeholder="Search..." class="outline-none">
</div>
अब, जब उपयोगकर्ता <input>
पर फोकस करता है, तो पूरे पैरेंट <div>
को एक नीला बॉर्डर और रिंग मिलती है।
focus-visible
: ब्राउज़रों के पास अलग-अलग अनुमान होते हैं कि फोकस रिंग कब दिखाना है। उदाहरण के लिए, वे माउस क्लिक के बाद एक बटन पर इसे नहीं दिखा सकते हैं, लेकिन वे कीबोर्ड नेविगेशन के बाद दिखाएंगे। focus-visible
वेरिएंट आपको इस होशियार व्यवहार का लाभ उठाने देता है। आमतौर पर यह सिफारिश की जाती है कि माउस और कीबोर्ड दोनों उपयोगकर्ताओं के लिए बेहतर उपयोगकर्ता अनुभव प्रदान करने के लिए आउटलाइन/रिंग स्टाइलिंग के लिए focus
के बजाय focus-visible
का उपयोग करें।
स्थिति के आधार पर स्टाइलिंग: फॉर्म और UI एलिमेंट वेरिएंट्स
सीधे उपयोगकर्ता की बातचीत से परे, एलिमेंट्स के अक्सर उनके एट्रिब्यूट्स के आधार पर स्टेट्स होते हैं। टेलविंड इन स्टेट्स को घोषणात्मक रूप से स्टाइल करने के लिए वेरिएंट्स प्रदान करता है।
disabled
वेरिएंट: अनुपलब्धता का संचार करना
जब किसी बटन या फॉर्म इनपुट में disabled
एट्रिब्यूट होता है, तो उसके साथ इंटरैक्ट नहीं किया जा सकता है। disabled
वेरिएंट आपको इस स्थिति को स्टाइल करने की अनुमति देता है ताकि यह उपयोगकर्ता को स्पष्ट रूप से दिखाई दे।
<button disabled class="bg-slate-300 text-slate-500 font-bold py-2 px-4 rounded cursor-not-allowed
disabled:opacity-50">
Processing...
</button>
यहाँ, disabled:opacity-50
बटन की ओपेसिटी को कम कर देता है जब disabled
एट्रिब्यूट मौजूद होता है, जो एक निष्क्रिय स्थिति को इंगित करने के लिए एक सामान्य परंपरा है। cursor-not-allowed
यूटिलिटी इसे और पुष्ट करती है।
checked
वेरिएंट: चेकबॉक्स और रेडियो बटन के लिए
checked
वेरिएंट कस्टम चेकबॉक्स और रेडियो बटन बनाने के लिए आवश्यक है। यह तब स्टाइल लागू करता है जब इनपुट का checked
एट्रिब्यूट सत्य होता है।
उदाहरण: एक कस्टम स्टाइल वाला चेकबॉक्स
<label class="flex items-center space-x-3">
<input type="checkbox" class="appearance-none h-5 w-5 border border-gray-300 rounded-md
checked:bg-blue-600 checked:border-transparent">
<span class="text-gray-900 font-medium">Accept terms and conditions</span>
</label>
हम ब्राउज़र की डिफ़ॉल्ट स्टाइलिंग को हटाने के लिए appearance-none
का उपयोग करते हैं, और फिर बॉक्स के चेक होने पर बैकग्राउंड का रंग बदलने के लिए checked:
वेरिएंट का उपयोग करते हैं। आप इस वेरिएंट के साथ ::before
या ::after
स्यूडो-एलिमेंट्स का उपयोग करके एक चेकमार्क आइकन भी जोड़ सकते हैं।
फॉर्म वैलिडेशन वेरिएंट्स: required
, optional
, valid
, invalid
आधुनिक फॉर्म रीयल-टाइम वैलिडेशन फीडबैक प्रदान करते हैं। टेलविंड के वैलिडेशन वेरिएंट्स ब्राउज़र के कंस्ट्रेंट वैलिडेशन API का लाभ उठाते हैं। ये वेरिएंट्स required
जैसे एट्रिब्यूट्स और इनपुट के मान की वर्तमान वैधता स्थिति (जैसे, type="email"
के लिए) के आधार पर लागू होते हैं।
<input type="email" required
class="border rounded-md px-3 py-2
invalid:border-pink-500 invalid:text-pink-600
focus:invalid:border-pink-500 focus:invalid:ring-pink-500
valid:border-green-500">
इस इनपुट फील्ड में होगा:
- यदि सामग्री एक वैध ईमेल पता नहीं है तो एक गुलाबी बॉर्डर और टेक्स्ट (
invalid:
)। - एक बार वैध ईमेल पता दर्ज करने के बाद एक हरा बॉर्डर (
valid:
)। - यदि फील्ड अमान्य होने पर फोकस किया जाता है तो फोकस रिंग भी गुलाबी हो जाएगी (
focus:invalid:
)।
उन्नत इंटरैक्टिविटी: `group` और `peer` वेरिएंट्स
कभी-कभी, आपको किसी *दूसरे* एलिमेंट की स्थिति के आधार पर किसी एलिमेंट को स्टाइल करने की आवश्यकता होती है। यहीं पर शक्तिशाली group
और peer
अवधारणाएं काम आती हैं। वे UI चुनौतियों के एक पूरे वर्ग को हल करते हैं जिन्हें पहले केवल यूटिलिटी क्लासेस के साथ संभालना मुश्किल था।
`group` की शक्ति: पैरेंट स्टेट पर चिल्ड्रन की स्टाइलिंग
group
वेरिएंट आपको पैरेंट एलिमेंट की स्थिति के आधार पर चाइल्ड एलिमेंट्स को स्टाइल करने देता है। इसका उपयोग करने के लिए, आप जिस पैरेंट एलिमेंट को ट्रैक करना चाहते हैं, उसमें group
क्लास जोड़ते हैं। फिर, किसी भी चाइल्ड एलिमेंट पर, आप group-hover
, group-focus
, आदि जैसे वेरिएंट्स का उपयोग कर सकते हैं।
उदाहरण: एक कार्ड जिसमें शीर्षक और आइकन है जो हॉवर पर एक साथ रंग बदलते हैं
<a href="#" class="group block max-w-xs mx-auto rounded-lg p-6 bg-white ring-1 ring-slate-900/5 shadow-lg space-y-3
hover:bg-sky-500 hover:ring-sky-500">
<div class="flex items-center space-x-3">
<!-- SVG Icon -->
<svg class="h-6 w-6 stroke-sky-500 group-hover:stroke-white">...</svg>
<h3 class="text-slate-900 group-hover:text-white text-sm font-semibold">New Project</h3>
</div>
<p class="text-slate-500 group-hover:text-white text-sm">Create a new project from a variety of templates.</p>
</a>
यह कैसे काम करता है:
- हम पैरेंट
<a>
टैग मेंgroup
क्लास जोड़ते हैं। - जब उपयोगकर्ता पूरे लिंक पर हॉवर करता है, तो
hover:bg-sky-500
के कारण इसका बैकग्राउंड रंग बदल जाता है। - इसके साथ ही, SVG पर
group-hover:stroke-white
क्लास और टेक्स्ट एलिमेंट्स परgroup-hover:text-white
सक्रिय हो जाते हैं, जिससे उनके रंग सफेद हो जाते हैं।
यह एक सुसंगत, समग्र हॉवर प्रभाव बनाता है जिसके लिए अन्यथा कस्टम CSS या जावास्क्रिप्ट की आवश्यकता होती।
सिबलिंग स्टाइलिंग `peer` के साथ: फॉर्म के लिए एक गेम-चेंजर
peer
वेरिएंट group
के समान है, लेकिन यह सिबलिंग एलिमेंट्स को स्टाइल करने के लिए काम करता है। आप किसी एलिमेंट में peer
क्लास जोड़ते हैं, और फिर आप "पीयर" की स्थिति के आधार पर उन्हें स्टाइल करने के लिए *बाद के* सिबलिंग एलिमेंट्स पर peer-checked
या peer-invalid
जैसे वेरिएंट्स का उपयोग कर सकते हैं। यह कस्टम फॉर्म कंट्रोल्स के लिए अविश्वसनीय रूप से उपयोगी है।
उदाहरण: एक लेबल जो तब बदलता है जब उसका संबंधित चेकबॉक्स चेक किया जाता है
<label class="relative inline-flex items-center cursor-pointer">
<input type="checkbox" class="sr-only peer">
<div class="w-11 h-6 bg-gray-200 rounded-full
peer-focus:ring-4 peer-focus:ring-blue-300
peer-checked:after:translate-x-full peer-checked:after:border-white
after:content-[''] after:absolute after:top-0.5 after:left-[2px]
after:bg-white after:border-gray-300 after:border after:rounded-full
after:h-5 after:w-5 after:transition-all
peer-checked:bg-blue-600"></div>
<span class="ml-3 text-sm font-medium text-gray-900 peer-checked:text-blue-600">
Enable Notifications
</span>
</label>
यह शून्य जावास्क्रिप्ट के साथ बनाया गया एक पूर्ण, सुलभ टॉगल स्विच है!
- वास्तविक चेकबॉक्स
<input>
कोsr-only
के साथ दृष्टिगत रूप से छिपाया गया है (यह अभी भी स्क्रीन रीडर्स के लिए सुलभ है) और इसेpeer
के रूप में चिह्नित किया गया है। - विज़ुअल टॉगल स्विच एक
<div>
है जिसे एक हैंडल के साथ एक ट्रैक की तरह दिखने के लिए स्टाइल किया गया है (::after
स्यूडो-एलिमेंट का उपयोग करके)। peer-checked:bg-blue-600
छिपे हुए चेकबॉक्स के चेक होने पर ट्रैक का बैकग्राउंड रंग बदल देता है।peer-checked:after:translate-x-full
चेकबॉक्स के चेक होने पर हैंडल को दाईं ओर स्लाइड करता है।peer-checked:text-blue-600
सिबलिंग<span>
लेबल टेक्स्ट का रंग बदल देता है।
ग्रैनुलर कंट्रोल के लिए वेरिएंट्स का संयोजन
टेलविंड की सबसे शक्तिशाली विशेषताओं में से एक वेरिएंट्स को एक साथ चेन करने की क्षमता है। यह अत्यधिक विशिष्ट सशर्त स्टाइल बनाने की अनुमति देता है।
रिस्पॉन्सिव और स्टेट वेरिएंट्स: द डायनामिक डुओ
आप रिस्पॉन्सिव प्रीफिक्स (जैसे md:
, lg:
) को स्टेट वेरिएंट्स के साथ जोड़ सकते हैं ताकि स्टाइल केवल कुछ स्क्रीन आकारों पर *और* कुछ स्थितियों में लागू हो। रिस्पॉन्सिव वेरिएंट हमेशा पहले आता है।
सिंटेक्स: breakpoint:state:utility-class
<button class="bg-blue-500 text-white p-2 rounded
hover:bg-blue-600
md:bg-green-500 md:hover:bg-green-600">
Responsive Button
</button>
यह बटन:
- छोटी स्क्रीन पर नीला होगा, हॉवर पर गहरा नीला हो जाएगा।
- मध्यम स्क्रीन और उससे ऊपर हरा होगा (
md:bg-green-500
), हॉवर पर गहरा हरा हो जाएगा (md:hover:bg-green-600
)।
एकाधिक स्टेट वेरिएंट्स को स्टैक करना
आप स्टाइल को केवल तभी लागू करने के लिए कई स्टेट वेरिएंट्स को भी स्टैक कर सकते हैं जब सभी शर्तें पूरी हों। यह इंटरैक्शन को ठीक करने के लिए उपयोगी है।
उदाहरण: एक डार्क मोड बटन जो हॉवर और फोकस पर अलग-अलग प्रतिक्रिया करता है
<button class="p-2 rounded-full text-gray-400
dark:text-gray-500
hover:text-gray-600 dark:hover:text-gray-300
focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500
dark:focus:ring-offset-gray-900 dark:focus:ring-gray-400
dark:hover:focus:ring-gray-200">
<!-- Icon here -->
</button>
यहाँ, dark:hover:focus:ring-gray-200
एक विशिष्ट रिंग रंग केवल तभी लागू करता है जब डार्क मोड सक्रिय हो, बटन पर हॉवर किया जा रहा हो, *और* उस पर फोकस हो। स्टेट वेरिएंट्स का क्रम आमतौर पर मायने नहीं रखता है, क्योंकि टेलविंड संयोजन के लिए सही CSS सिलेक्टर उत्पन्न करता है।
कस्टमाइज़ेशन और वन-ऑफ़्स
हालांकि टेलविंड बॉक्स से बाहर वेरिएंट्स का एक व्यापक सेट प्रदान करता है, कभी-कभी आपको अधिक नियंत्रण की आवश्यकता होती है।
आर्बिट्रेरी वेरिएंट्स का उपयोग करना
वन-ऑफ़ स्थितियों के लिए जहाँ आपको एक CSS सिलेक्टर की आवश्यकता होती है जो बिल्ट-इन वेरिएंट द्वारा कवर नहीं किया गया है, आप आर्बिट्रेरी वेरिएंट्स का उपयोग कर सकते हैं। यह एक अविश्वसनीय रूप से शक्तिशाली एस्केप हैच है जो आपको अपनी क्लास एट्रिब्यूट में सीधे कस्टम सिलेक्टर्स लिखने देता है, जो स्क्वायर ब्रैकेट्स में संलग्न होते हैं।
उदाहरण: सूची आइटम्स को अलग-अलग स्टाइल करना
<ul>
<li class="[&:nth-child(odd)]:bg-gray-100 p-2">First item</li>
<li class="[&:nth-child(odd)]:bg-gray-100 p-2">Second item</li>
<li class="[&:nth-child(odd)]:bg-gray-100 p-2">Third item</li>
</ul>
क्लास [&:nth-child(odd)]:bg-gray-100
li:nth-child(odd)
के लिए CSS उत्पन्न करती है, जिससे प्रत्येक आइटम में अतिरिक्त क्लासेस जोड़े बिना एक धारीदार सूची बनती है।
एक और आम उपयोग डायरेक्ट डिसेंडेंट स्टाइलिंग के लिए है:
<div class="[&_>_p]:mt-4">
<p>First paragraph.</p>
<p>Second paragraph. This will have a top margin.</p>
<div><p>Nested paragraph. This will NOT have a top margin.</p></div>
</div>
क्लास [&_>_p]:mt-4
केवल div के डायरेक्ट `p` चिल्ड्रन को स्टाइल करती है।
`tailwind.config.js` में वेरिएंट्स को कॉन्फ़िगर करना
डिफ़ॉल्ट रूप से, टेलविंड का JIT इंजन सभी कोर प्लगइन्स के लिए सभी वेरिएंट्स को सक्षम करता है। हालांकि, यदि आपको थर्ड-पार्टी प्लगइन्स के लिए वेरिएंट्स को सक्षम करने की आवश्यकता है या आप एक कस्टम वेरिएंट पंजीकृत करना चाहते हैं, तो आपको अपनी `tailwind.config.js` फ़ाइल का उपयोग करने की आवश्यकता होगी।
// tailwind.config.js
module.exports = {
// ...
plugins: [
function({ addVariant }) {
addVariant('child', '& > *');
addVariant('child-hover', '& > *:hover');
}
],
}
यह कस्टम प्लगइन नए `child` और `child-hover` वेरिएंट्स जोड़ता है, जिनका उपयोग आप किसी एलिमेंट के सभी डायरेक्ट चिल्ड्रन को स्टाइल करने के लिए child:text-red-500
की तरह कर सकते हैं।
निष्कर्ष: स्टेट-ड्रिवन UI की शक्ति
टेलविंड CSS वेरिएंट्स केवल एक सुविधा से अधिक हैं; वे यूटिलिटी-फर्स्ट दर्शन का एक मौलिक हिस्सा हैं। आपको किसी एलिमेंट की उपस्थिति को उसकी सभी संभावित स्थितियों में सीधे HTML में वर्णित करने की अनुमति देकर, वेरिएंट्स आपको जटिल, मजबूत और अत्यधिक रखरखाव योग्य यूजर इंटरफेस बनाने में मदद करते हैं।
सरल hover
प्रभावों से लेकर peer-checked
और रिस्पॉन्सिव, मल्टी-स्टेट संयोजनों के साथ बनाए गए जटिल फॉर्म कंट्रोल्स तक, अब आपके पास अपने डिज़ाइनों को जीवन में लाने के लिए एक व्यापक टूलकिट है। वे एक कंपोनेंट-आधारित मानसिकता को प्रोत्साहित करते हैं जहाँ सभी तर्क — संरचना, स्टाइल और स्थिति — एक ही स्थान पर समाहित होते हैं।
हमने आवश्यक बातों को कवर किया है और उन्नत तकनीकों का पता लगाया है, लेकिन यात्रा यहाँ समाप्त नहीं होती है। वेरिएंट्स में महारत हासिल करने का सबसे अच्छा तरीका उनका उपयोग करना है। उन्हें संयोजित करने के साथ प्रयोग करें, आधिकारिक टेलविंड CSS डॉक्यूमेंटेशन में पूरी सूची का पता लगाएं, और कस्टम CSS या जावास्क्रिप्ट का सहारा लिए बिना इंटरैक्टिव कंपोनेंट्स बनाने के लिए खुद को चुनौती दें। स्टेट-ड्रिवन स्टाइलिंग की शक्ति को अपनाकर, आप वैश्विक दर्शकों के लिए तेजी से, अधिक सुसंगत और अधिक आनंददायक उपयोगकर्ता अनुभव बनाने में सक्षम होंगे।