Plugin के ज़रिए कस्टम यूटिलिटी जोड़ना
ऐसा plugin लिखें जो डिफ़ॉल्ट Tailwind वितरण में मौजूद न होने वाली text-shadow-* या scrollbar-hide जैसी नई यूटिलिटी क्लास जोड़े।
Plugin के ज़रिए कस्टम यूटिलिटी जोड़ना, CoddyKit पर Tailwind CSS Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Tailwind CSS Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Tailwind CSS Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
कस्टम उपयोगिता कब जोड़ें
कस्टम उपयोगिता तब जोड़ें, जब आप @apply ब्लॉक या इनलाइन शैलियों में बार-बार वही मूल CSS लिख रहे हों, जब Tailwind में किसी मान्य CSS प्रॉपर्टी के लिए उपयोगिता उपलब्ध न हो, या जब ब्राउज़र-विशिष्ट प्रीफ़िक्स के संयोजन के लिए कोई साफ़ क्लास नाम आवश्यक हो। अच्छी कस्टम उपयोगिताएँ Tailwind के एकल-जिम्मेदारी सिद्धांत का पालन करती हैं: एक उपयोगिता एक CSS प्रॉपर्टी या आपस में closely संबंधित प्रॉपर्टियों के समूह को नियंत्रित करती है। ऐसी उपयोगिताएँ बनाने से बचें जो कई असंबंधित प्रॉपर्टियाँ सेट करती हों—वे घटकों में होनी चाहिए।
स्क्रॉलबार छिपाने की उपयोगिता
सबसे अधिक माँगी जाने वाली कस्टम उपयोगिताओं में से एक .scrollbar-hide है—यह स्क्रॉलबार को दिखाई देने से रोकती है, जबकि तत्व को स्क्रॉल करने योग्य बनाए रखती है। इसके लिए अलग-अलग ब्राउज़र में विक्रेता-विशिष्ट प्रॉपर्टियों की आवश्यकता होती है: Firefox के लिए scrollbar-width: none और Chromium ब्राउज़र के लिए -webkit-scrollbar: display none। इसे प्लगइन में पैकेज करने से यह आपके मार्कअप में कहीं भी सरल scrollbar-hide क्लास के रूप में उपलब्ध हो जाती है।
const plugin = require('tailwindcss/plugin');
module.exports = {
plugins: [
plugin(function({ addUtilities }) {
addUtilities({
'.scrollbar-hide': {
'-ms-overflow-style': 'none',
'scrollbar-width': 'none',
'&::-webkit-scrollbar': {
display: 'none'
}
},
'.scrollbar-default': {
'-ms-overflow-style': 'auto',
'scrollbar-width': 'auto',
'&::-webkit-scrollbar': {
display: 'block'
}
}
});
})
]
};
// Usage
// <div class='overflow-x-auto scrollbar-hide'>...टेक्स्ट शैडो उपयोगिताएँ
CSS की text-shadow प्रॉपर्टी का बहुत उपयोग होता है, लेकिन Tailwind में यह डिफ़ॉल्ट रूप से शामिल नहीं है। थीम एकीकरण के साथ इसके लिए प्लगइन बनाने से उपयोगकर्ता इसे किसी अंतर्निहित उपयोगिता की तरह इस्तेमाल कर सकते हैं और कॉन्फ़िगरेशन के ज़रिए इसे अनुकूलित भी कर सकते हैं। थीम में डिफ़ॉल्ट मान परिभाषित करें और प्लगइन में उनका संदर्भ दें, ताकि उपयोगिता tailwind.config.js में उपयोगकर्ता के ओवरराइड का सम्मान करे।
const plugin = require('tailwindcss/plugin');
module.exports = {
theme: {
extend: {
textShadow: {
sm: '0 1px 2px var(--tw-shadow-color, rgba(0,0,0,0.2))',
DEFAULT: '0 2px 4px var(--tw-shadow-color, rgba(0,0,0,0.3))',
lg: '0 4px 8px var(--tw-shadow-color, rgba(0,0,0,0.4))'
}
}
},
plugins: [
plugin(function({ matchUtilities, theme }) {
matchUtilities(
{ 'text-shadow': (value) => ({ textShadow: value }) },
{ values: theme('textShadow') }
);
})
]
};
// Usage: text-shadow-sm, text-shadow, text-shadow-lg
// Or arbitrary: text-shadow-[0_4px_6px_rgba(0,0,0,0.5)]लेखन-दिशा उपयोगिताएँ
लेखन-दिशा के लिए CSS की तार्किक प्रॉपर्टियाँ (margin-inline-start, padding-inline-end, inset-inline-start) अलग-अलग CSS लिखे बिना दाएँ-से-बाएँ (RTL) लेआउट का समर्थन सक्षम करती हैं। Tailwind v3 में कुछ तार्किक प्रॉपर्टियाँ जोड़ी गई थीं, लेकिन शेष कमियों को भरने के लिए आप ऐसा प्लगइन लिख सकते हैं, जिसकी नामकरण-पद्धति Tailwind की शैली से मेल खाती हो।
plugin(function({ addUtilities, theme }) {
const spacing = theme('spacing');
const utilities = {};
Object.entries(spacing).forEach(([key, value]) => {
// Logical margin utilities (RTL-aware)
utilities['.ms-' + key] = { 'margin-inline-start': value };
utilities['.me-' + key] = { 'margin-inline-end': value };
utilities['.ps-' + key] = { 'padding-inline-start': value };
utilities['.pe-' + key] = { 'padding-inline-end': value };
// Logical inset
utilities['.start-' + key] = { 'inset-inline-start': value };
utilities['.end-' + key] = { 'inset-inline-end': value };
});
addUtilities(utilities);
})ग्रेडिएंट टेक्स्ट उपयोगिता
ग्रेडिएंट टेक्स्ट के लिए तीन CSS प्रॉपर्टियों का संयोजन आवश्यक है: background-clip: text, -webkit-background-clip: text, और color: transparent। वास्तविक ग्रेडिएंट रंग bg-gradient-to-* और from-*/to-* उपयोगिताओं से आते हैं, इसलिए प्लगइन को केवल क्लिपिंग का आधार देना होता है। यह ऐसी बहु-प्रॉपर्टी उपयोगिता का उत्कृष्ट उदाहरण है, जिसे एक याद रखने योग्य क्लास नाम के रूप में रखना लाभदायक है।
plugin(function({ addUtilities }) {
addUtilities({
'.text-gradient': {
'-webkit-background-clip': 'text',
'background-clip': 'text',
'-webkit-text-fill-color': 'transparent',
'color': 'transparent'
}
});
})
// Usage: combine with standard bg-gradient utilities
<h1 class='
text-gradient
bg-gradient-to-r
from-purple-500
to-blue-500
text-4xl font-bold
'>
Beautiful gradient text
</h1>ग्रिड ऑटो-फिल उपयोगिता
उत्तरदायी ग्रिड के लिए CSS Grid के auto-fill और auto-fit रिपीट पैटर्न आम हैं, लेकिन इनके लिए लंबा सिंटैक्स लिखना पड़ता है। सबसे सामान्य कॉलम न्यूनतम चौड़ाइयों के लिए पैरामीटर-आधारित ग्रिड उपयोगिताएँ बनाने वाला प्लगइन, उत्तरदायी ग्रिड लिखना बहुत सरल बना देता है। matchUtilities का उपयोग करें, ताकि उपयोगकर्ता मनमानी न्यूनतम कॉलम चौड़ाइयाँ निर्दिष्ट कर सकें।
plugin(function({ matchUtilities }) {
matchUtilities(
{
'grid-fill': (value) => ({
gridTemplateColumns: 'repeat(auto-fill, minmax(' + value + ', 1fr))'
}),
'grid-fit': (value) => ({
gridTemplateColumns: 'repeat(auto-fit, minmax(' + value + ', 1fr))'
})
},
{ values: { sm: '10rem', md: '15rem', lg: '20rem', xl: '25rem' } }
);
})
// Usage:
// <div class='grid grid-fill-md gap-4'>
// Items auto-arrange into columns of min 15rem
// </div>CSS Grid क्षेत्र उपयोगिताएँ
grid-template-areas के ज़रिए नामित ग्रिड क्षेत्रों के लिए ऐसा लंबा CSS लिखना पड़ता है, जिसे Tailwind के उपयोगिता मॉडल में व्यक्त करना कठिन है। कोई प्लगइन सामान्य नामित-क्षेत्र लेआउट के लिए उपयोगिताएँ जोड़ सकता है—जैसे हेडर, साइडबार, मुख्य भाग और फ़ूटर वाला पारंपरिक पृष्ठ लेआउट—और इन्हें एकल उपयोगिता क्लास के रूप में उपलब्ध करा सकता है। अधिक जटिल लेआउट के लिए ये col-span-* और row-span-* के साथ अच्छी तरह काम करती हैं।
plugin(function({ addUtilities }) {
addUtilities({
'.grid-area-page': {
gridTemplateAreas:
'"header header"' +
'"sidebar main"' +
'"footer footer"',
gridTemplateColumns: '250px 1fr',
gridTemplateRows: 'auto 1fr auto'
},
'.area-header': { gridArea: 'header' },
'.area-sidebar': { gridArea: 'sidebar' },
'.area-main': { gridArea: 'main' },
'.area-footer': { gridArea: 'footer' }
});
})
// Usage:
// <div class='grid grid-area-page min-h-screen'>
// <header class='area-header'>...</header>
// <aside class='area-sidebar'>...</aside>
// <main class='area-main'>...</main>
// <footer class='area-footer'>...</footer>
// </div>अंतर्निहित सुविधाओं से आगे की एनीमेशन उपयोगिताएँ
Tailwind animate-spin, animate-pulse, animate-bounce, और animate-ping उपलब्ध कराता है। अधिक समृद्ध एनीमेशन—जैसे डगमगाना, धड़कन या तैरने का प्रभाव—के लिए थीम में कस्टम कीफ़्रेम जोड़ें और प्लगइन में उनका संदर्भ दें। प्लगइन यह सुनिश्चित करता है कि एनीमेशन क्लास नाम Tailwind की animate-* नामकरण-पद्धति का पालन करें, जिससे पूरा तंत्र सुसंगत रहता है।
// tailwind.config.js
module.exports = {
theme: {
extend: {
keyframes: {
wiggle: {
'0%, 100%': { transform: 'rotate(-3deg)' },
'50%': { transform: 'rotate(3deg)' }
},
heartbeat: {
'0%, 100%': { transform: 'scale(1)' },
'14%': { transform: 'scale(1.3)' },
'28%': { transform: 'scale(1)' },
'42%': { transform: 'scale(1.3)' },
'70%': { transform: 'scale(1)' }
}
},
animation: {
wiggle: 'wiggle 1s ease-in-out infinite',
heartbeat: 'heartbeat 1.5s ease-in-out infinite'
}
}
}
};
// Usage: class='animate-wiggle' or class='animate-heartbeat'अपनी कस्टम उपयोगिताओं का परीक्षण
एक परीक्षण HTML फ़ाइल बनाकर, उसमें क्लास नामों का उपयोग करके और Tailwind CLI चलाकर जाँचें कि आपकी प्लगइन उपयोगिताएँ तैयार CSS में दिखाई देती हैं। JIT इंजन को वह क्लास ऐसी फ़ाइल में मिलनी चाहिए, जो आपके कंटेंट ग्लोब से मेल खाती हो। यदि आप उत्तरदायी और स्थिति वैरिएंट का उपयोग करना चाहते हैं, तो यह भी जाँचें कि वे काम करते हैं—कुछ छद्म-तत्व उपयोगिताएँ, जैसे ::-webkit-scrollbar, उत्तरदायी प्रीफ़िक्स का सार्थक समर्थन नहीं करतीं।
<!-- test.html -->
<div class='scrollbar-hide overflow-y-auto h-48'>
<p class='text-shadow-lg text-2xl font-bold text-gray-900'>Test</p>
<div class='grid grid-fill-md gap-4'>
<div class='bg-gray-100 p-4 rounded'>Card 1</div>
<div class='bg-gray-100 p-4 rounded'>Card 2</div>
</div>
</div>
<!-- Run: npx tailwindcss -i src/input.css -o test-output.css --content test.html -->
<!-- Inspect test-output.css for your custom utility classes -->कस्टम उपयोगिताओं का दस्तावेज़ीकरण
अपनी टीम के लिए कस्टम उपयोगिताओं का दस्तावेज़ तैयार करें, ताकि सभी को पता हो कि कौन-सी उपयोगिताएँ उपलब्ध हैं और उनका उपयोग कैसे करना है। एक PLUGINS.md फ़ाइल या Storybook पृष्ठ बनाएँ, जिसमें प्रत्येक कस्टम उपयोगिता के क्लास नाम, स्वीकार्य मान और उपयोग के उदाहरण सूचीबद्ध हों। दस्तावेज़ीकरण के बिना टीम के सदस्य अक्सर वही CSS दो बार लिखते हैं—एक बार उपयोगिता के रूप में और फिर इनलाइन शैलियों के रूप में—क्योंकि उन्हें प्लगइन के अस्तित्व की जानकारी नहीं होती।
/*
Custom Utilities Documentation
================================
.scrollbar-hide
Hides the scrollbar while preserving scroll functionality.
Use with: overflow-y-auto, overflow-x-auto
Example: <div class='overflow-y-auto h-64 scrollbar-hide'>
.text-shadow-{size}
Adds a text shadow. Sizes: sm, DEFAULT, lg.
Example: <h1 class='text-shadow-lg text-3xl font-bold'>
Arbitrary: <h1 class='text-shadow-[0_4px_8px_rgba(0,0,0,0.5)]'>
.text-gradient
Enables gradient text via background-clip: text.
Must combine with bg-gradient-to-* and from-*/to-* utilities.
Example: <span class='text-gradient bg-gradient-to-r from-purple-500 to-pink-500'>
.grid-fill-{size}
Auto-fill grid with minimum column width. Sizes: sm, md, lg, xl.
Example: <div class='grid grid-fill-md gap-4'>
*/कस्टम उपयोगिताओं का प्रदर्शन पर प्रभाव
कस्टम उपयोगिताएँ आपकी तैयार CSS का आकार बढ़ाती हैं। यदि कोई उपयोगिता बहुत-से रूप बनाती है, जैसे 30 से अधिक स्केल चरणों वाली spacing उपयोगिताएँ, तो आउटपुट काफ़ी बड़ा हो सकता है। प्रोग्राम के ज़रिए बनाई जाने वाली उपयोगिताओं का चयन सावधानी से करें। matchUtilities के साथ थीम मानों का छोटा समूह इस्तेमाल करें और कभी-कभार की आवश्यकताओं के लिए हर संभावित संयोजन पहले से बनाने के बजाय मनमाने मानों पर निर्भर रहें। इससे लचीलापन बनाए रखते हुए आपका CSS बंडल छोटा रहता है।
// Avoid: generates 30+ utilities upfront
plugin(function({ addUtilities, theme }) {
const spacing = theme('spacing'); // 30+ entries
const utils = {};
Object.entries(spacing).forEach(([k, v]) => {
utils['.clip-' + k] = { clipPath: 'inset(' + v + ')' };
});
addUtilities(utils); // large CSS output
});
// Better: use matchUtilities with limited defaults
plugin(function({ matchUtilities, theme }) {
matchUtilities(
{ 'clip': (v) => ({ clipPath: 'inset(' + v + ')' }) },
{ values: { none: '0', sm: '0.5rem', md: '1rem' } }
// Users can still do clip-[2rem] for custom values
);
});त्वरित जाँच
इस पाठ में Tailwind CSS Mastery की अवधारणाओं की अपनी समझ जाँचें।
पाठ का पुनरावलोकन
इस पाठ में आपने सीखा: addUtilities स्थिर कस्टम उपयोगिता क्लास जोड़ता है, matchUtilities मनमाने मानों के समर्थन वाली उपयोगिताएँ जोड़ता है, और कस्टम उपयोगिताओं का दस्तावेज़ीकरण होना चाहिए तथा उन्हें वास्तविक, बार-बार आने वाली आवश्यकताओं तक सीमित रखना चाहिए। अब हम सीखेंगे कि प्लगइनों के ज़रिए कस्टम स्थिति वैरिएंट कैसे जोड़ें, ताकि कस्टम चयनकर्ताओं और डेटा एट्रिब्यूट को लक्ष्य बनाया जा सके।
एआई शिक्षक के साथ HTML सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “Plugin के ज़रिए कस्टम यूटिलिटी जोड़ना” पाठ निःशुल्क है?
हाँ—“Plugin के ज़रिए कस्टम यूटिलिटी जोड़ना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Tailwind CSS Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Tailwind CSS Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Plugin के ज़रिए कस्टम यूटिलिटी जोड़ना” में मैं क्या सीखूँगा?
ऐसा plugin लिखें जो डिफ़ॉल्ट Tailwind वितरण में मौजूद न होने वाली text-shadow-* या scrollbar-hide जैसी नई यूटिलिटी क्लास जोड़े। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Tailwind CSS Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Tailwind CSS Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Tailwind CSS Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Plugin के ज़रिए कस्टम यूटिलिटी जोड़ना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Tailwind CSS Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Tailwind CSS Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Tailwind Plugin API
- Plugin के ज़रिए कस्टम यूटिलिटी जोड़ना
- Plugin के ज़रिए कस्टम वैरिएंट जोड़ना
- Plugin प्रकाशित करना और दोबारा उपयोग करना