आमच्या Tailwind CSS व्हेरियंट्सवरील सर्वसमावेशक मार्गदर्शकाद्वारे इंटरॅक्टिव्ह UI ची पूर्ण क्षमता अनलॉक करा. स्यूडो-क्लास, स्टेट, ग्रुप आणि पीअर स्टायलिंग शिका.
Tailwind CSS व्हेरियंट्समध्ये प्राविण्य: स्यूडो-क्लास आणि स्टेट स्टायलिंगचा सखोल अभ्यास
आधुनिक वेब डेव्हलपमेंटमध्ये, असे यूजर इंटरफेस तयार करणे अत्यंत महत्त्वाचे आहे जे केवळ दिसायला आकर्षक नसून वापरकर्त्याच्या परस्परसंवादासाठी डायनॅमिक आणि प्रतिसाद देणारे असतील. इथेच Tailwind CSS सारख्या युटिलिटी-फर्स्ट फ्रेमवर्कची खरी ताकद दिसून येते. त्याचे युटिलिटी क्लासेस 'काय' करायचे हे सांगतात—म्हणजे कोणती स्टाईल लावायची—तर त्याचे व्हेरियंट्स 'कधी' लावायची हे सांगतात.
व्हेरियंट्स हे एक प्रकारचे जादूई मिश्रण आहे जे स्टॅटिक डिझाइन्सना इंटरॅक्टिव्ह अनुभवांमध्ये रूपांतरित करते. हे विशेष प्रीफिक्स आहेत जे तुम्हाला एलिमेंटची स्थिती, वापरकर्त्याचा संवाद किंवा अगदी दुसऱ्या एलिमेंटच्या स्थितीनुसार युटिलिटी क्लासेस सशर्त लागू करण्याची परवानगी देतात. मग ते hover वर बटणाचा रंग बदलणे असो, form input focus झाल्यावर स्टाईल करणे असो, किंवा चेकबॉक्स निवडल्यावर संदेश दर्शविणे असो, व्हेरियंट्स हेच या कामासाठी योग्य साधने आहेत.
हे सर्वसमावेशक मार्गदर्शक जगभरातील डेव्हलपर्ससाठी तयार केले आहे. आम्ही Tailwind CSS व्हेरियंट्सच्या संपूर्ण स्पेक्ट्रमचा शोध घेऊ, hover
आणि focus
सारख्या मूलभूत स्यूडो-क्लासपासून ते जटिल कंपोनेंट इंटरॅक्शन्ससाठी group
आणि peer
वापरून प्रगत तंत्रांपर्यंत. याच्या शेवटी, तुमच्याकडे संपूर्णपणे तुमच्या HTML मध्ये अत्याधुनिक, स्टेट-अवेअर इंटरफेस तयार करण्याचे ज्ञान असेल.
मूळ संकल्पना समजून घेणे: व्हेरियंट्स म्हणजे काय?
मूलतः, Tailwind CSS मधील व्हेरियंट म्हणजे एक प्रीफिक्स जो तुम्ही युटिलिटी क्लासला कोलन (:
) ने जोडून लावता. हा प्रीफिक्स एका अटीप्रमाणे काम करतो. त्याच्या पुढे असलेला युटिलिटी क्लास फक्त तेव्हाच लागू होतो जेव्हा ती अट पूर्ण होते.
याची मूळ सिंटॅक्स सोपी आणि सहज समजण्यासारखी आहे:
व्हेरियंट:युटिलिटी-क्लास
उदाहरणार्थ, एका साध्या बटणाचा विचार करा. तुम्हाला कदाचित त्याचा बॅकग्राउंड डीफॉल्टनुसार निळा हवा असेल, पण जेव्हा वापरकर्ता त्यावर माउस फिरवेल तेव्हा तो गडद निळा व्हावा. पारंपरिक CSS मध्ये, तुम्ही असे लिहाल:
.my-button {
background-color: #3b82f6; /* bg-blue-500 */
}
.my-button:hover {
background-color: #2563eb; /* bg-blue-700 */
}
Tailwind च्या व्हेरियंट्ससह, तुम्ही हाच परिणाम थेट तुमच्या HTML मध्ये मिळवू शकता, ज्यामुळे तुमची स्टायलिंग तुमच्या मार्कअपसोबत एकाच ठिकाणी राहते:
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
Click me
</button>
येथे, hover:
हा व्हेरियंट आहे. तो Tailwind च्या जस्ट-इन-टाइम (JIT) इंजिनला एक CSS नियम तयार करण्यास सांगतो जो bg-blue-700
फक्त तेव्हाच लागू करेल जेव्हा बटन :hover
स्थितीत असेल. ही सोपी पण शक्तिशाली संकल्पना Tailwind CSS मधील सर्व इंटरॅक्टिव्ह स्टायलिंगचा पाया आहे.
सर्वात सामान्य व्हेरियंट्स: इंटरॅक्टिव्ह स्यूडो-क्लासेस
स्यूडो-क्लासेस हे CSS सिलेक्टर्स आहेत जे एलिमेंटची विशेष स्थिती परिभाषित करतात. Tailwind वापरकर्त्याच्या क्रियांना प्रतिसाद देण्यासाठी आपण दररोज वापरत असलेल्या सर्व सामान्य स्यूडो-क्लासेससाठी व्हेरियंट्स प्रदान करते.
hover
व्हेरियंट: माउस कर्सरला प्रतिसाद देणे
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 केल्यावर बॉक्स-शॅडोला मोठ्या आकारात बदलते.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 एलिमेंट व्हेरियंट्स
थेट वापरकर्त्याच्या परस्परसंवादाच्या पलीकडे, एलिमेंट्सच्या ॲट्रिब्यूट्सवर आधारित त्यांच्या स्थिती असतात. Tailwind या स्थितींना घोषित पद्धतीने स्टाईल करण्यासाठी व्हेरियंट्स प्रदान करते.
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
ॲट्रिब्यूट 'true' असतो तेव्हा ते स्टाईल लागू करते.
उदाहरण: एक कस्टम स्टाईल केलेला चेकबॉक्स
<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
आधुनिक फॉर्म्स रिअल-टाइम व्हॅलिडेशन फीडबॅक देतात. Tailwind चे व्हॅलिडेशन व्हेरियंट्स ब्राउझरच्या कंस्ट्रेंट व्हॅलिडेशन 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
, इत्यादी व्हेरियंट्स वापरू शकता.
उदाहरण: hover केल्यावर शीर्षक आणि आयकॉनचा रंग एकत्र बदलणारे कार्ड
<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 करतो, तेव्हा
hover:bg-sky-500
मुळे त्याचा बॅकग्राउंड रंग बदलतो. - त्याच वेळी, SVG वरील
group-hover:stroke-white
क्लास आणि टेक्स्ट एलिमेंट्सवरीलgroup-hover:text-white
क्लास सक्रिय होतात, ज्यामुळे त्यांचे रंग पांढरे होतात.
हे एक सुसंगत, समग्र hover इफेक्ट तयार करते ज्यासाठी अन्यथा कस्टम CSS किंवा जावास्क्रिप्टची आवश्यकता लागली असती.
`peer` सह सिबलिंग स्टायलिंग: फॉर्म्ससाठी एक गेम-चेंजर
peer
व्हेरियंट group
सारखाच आहे, पण तो सिबलिंग (sibling) एलिमेंट्सना स्टाईल करण्यासाठी काम करतो. तुम्ही एका एलिमेंटला 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>
लेबल टेक्स्टचा रंग बदलते.
सूक्ष्म नियंत्रणासाठी व्हेरियंट्स एकत्र करणे
Tailwind च्या सर्वात शक्तिशाली वैशिष्ट्यांपैकी एक म्हणजे व्हेरियंट्सना एकत्र जोडण्याची क्षमता. यामुळे अत्यंत विशिष्ट सशर्त स्टाईल्स तयार करता येतात.
रिस्पॉन्सिव्ह आणि स्टेट व्हेरियंट्स: एक डायनॅमिक जोडी
तुम्ही रिस्पॉन्सिव्ह प्रीफिक्स (जसे की md:
, lg:
) स्टेट व्हेरियंट्ससह एकत्र करून विशिष्ट स्क्रीन आकारांवर *आणि* विशिष्ट स्थितींमध्ये स्टाईल लागू करू शकता. रिस्पॉन्सिव्ह व्हेरियंट नेहमी प्रथम येतो.
सिंटॅक्स: ब्रेकपॉइंट:स्टेट:युटिलिटी-क्लास
<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>
हे बटन:
- लहान स्क्रीनवर निळे असेल, आणि hover केल्यावर गडद निळे होईल.
- मध्यम स्क्रीन आणि त्यावरील आकारांवर हिरवे असेल (
md:bg-green-500
), आणि hover केल्यावर गडद हिरवे होईल (md:hover:bg-green-600
).
एकाधिक स्टेट व्हेरियंट्स स्टॅक करणे
तुम्ही एकाधिक स्टेट व्हेरियंट्स स्टॅक करून केवळ सर्व अटी पूर्ण झाल्यावरच स्टाईल लागू करू शकता. हे परस्परसंवादांना सूक्ष्मपणे ट्यून करण्यासाठी उपयुक्त आहे.
उदाहरण: डार्क मोडमधील एक बटन जे hover आणि focus वर वेगळ्या प्रकारे प्रतिक्रिया देते
<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
एक विशिष्ट रिंग रंग फक्त तेव्हाच लागू करते जेव्हा डार्क मोड सक्रिय असतो, बटणावर hover केले जात असते, *आणि* त्यावर फोकस असतो. स्टेट व्हेरियंट्सचा क्रम सामान्यतः महत्त्वाचा नसतो, कारण Tailwind त्या संयोजनासाठी योग्य CSS सिलेक्टर तयार करते.
कस्टमायझेशन आणि वन-ऑफ्स
जरी Tailwind बॉक्सच्या बाहेर व्हेरियंट्सचा एक सर्वसमावेशक संच प्रदान करते, तरीही कधीकधी तुम्हाला अधिक नियंत्रणाची आवश्यकता असते.
आर्बिट्ररी व्हेरियंट्सचा वापर करणे
अशा काही विशेष परिस्थितींमध्ये जेव्हा तुम्हाला अशा CSS सिलेक्टरची आवश्यकता असते जो बिल्ट-इन व्हेरियंटमध्ये उपलब्ध नाही, तेव्हा तुम्ही आर्बिट्ररी व्हेरियंट्स वापरू शकता. ही एक अत्यंत शक्तिशाली सुविधा आहे जी तुम्हाला थेट तुमच्या क्लास ॲट्रिब्यूटमध्ये, चौकोनी कंसात (square brackets) कस्टम सिलेक्टर लिहिण्याची परवानगी देते.
उदाहरण: लिस्ट आयटम्सना वेगळ्या पद्धतीने स्टाईल करणे
<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` मध्ये व्हेरियंट्स कॉन्फिगर करणे
डीफॉल्टनुसार, Tailwind चे 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 ची शक्ती
Tailwind CSS व्हेरियंट्स केवळ एक सोय नाहीत; ते युटिलिटी-फर्स्ट तत्त्वज्ञानाचा एक मूलभूत भाग आहेत. एखाद्या एलिमेंटचे स्वरूप त्याच्या सर्व संभाव्य स्थितींमध्ये थेट HTML मध्ये वर्णन करण्याची परवानगी देऊन, व्हेरियंट्स तुम्हाला जटिल, मजबूत आणि अत्यंत देखरेख करण्यायोग्य यूजर इंटरफेस तयार करण्यास मदत करतात.
साध्या hover
इफेक्ट्सपासून ते peer-checked
सह तयार केलेल्या गुंतागुंतीच्या फॉर्म कंट्रोल्स आणि रिस्पॉन्सिव्ह, मल्टी-स्टेट कॉम्बिनेशन्सपर्यंत, तुमच्याकडे आता तुमच्या डिझाइन्सना जिवंत करण्यासाठी एक सर्वसमावेशक टूलकिट आहे. ते एका कंपोनेंट-आधारित मानसिकतेला प्रोत्साहन देतात जिथे सर्व लॉजिक—रचना, स्टाईल आणि स्टेट—एकाच ठिकाणी सामावलेले असते.
आम्ही अत्यावश्यक गोष्टी कव्हर केल्या आहेत आणि प्रगत तंत्रांचा शोध घेतला आहे, परंतु प्रवास इथेच संपत नाही. व्हेरियंट्समध्ये प्रभुत्व मिळवण्याचा सर्वोत्तम मार्ग म्हणजे त्यांचा वापर करणे. त्यांना एकत्र करून प्रयोग करा, अधिकृत Tailwind CSS डॉक्युमेंटेशनमध्ये संपूर्ण यादी एक्सप्लोर करा आणि कस्टम CSS किंवा जावास्क्रिप्टचा वापर न करता इंटरॅक्टिव्ह कंपोनेंट्स तयार करण्याचे आव्हान स्वीकारा. स्टेट-ड्रिव्हन स्टायलिंगच्या शक्तीचा स्वीकार करून, तुम्ही जागतिक प्रेक्षकांसाठी जलद, अधिक सुसंगत आणि अधिक आनंददायक वापरकर्ता अनुभव तयार करू शकाल.