अंतर्निर्मित कीफ़्रेम ऐनिमेशन
सामान्य लोडिंग और ध्यान आकर्षित करने वाले प्रतिरूपों के लिए Tailwind के अंतर्निर्मित animate-spin, animate-ping, animate-pulse और animate-bounce लागू करें।
अंतर्निर्मित कीफ़्रेम ऐनिमेशन, CoddyKit पर Tailwind CSS Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Tailwind CSS Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Tailwind CSS Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
CSS कीफ़्रेम एनीमेशन बनाम ट्रांज़िशन
CSS ट्रांज़िशन प्रारंभिक और अंतिम मान से परिभाषित दो अवस्थाओं के बीच एनीमेशन करते हैं। CSS कीफ़्रेम एनीमेशन कई अवस्थाओं का क्रम परिभाषित करते हैं और अनिश्चित समय तक दोहराए जा सकते हैं। Tailwind animate-* उपयोगिताओं के माध्यम से चार अंतर्निहित कीफ़्रेम एनीमेशन शामिल करता है। ये सबसे सामान्य UI एनीमेशन पैटर्न को कवर करते हैं: लोडिंग स्पिनर, धड़कते हुए स्केलेटन, ध्यान आकर्षित करने वाले पिंग और उछलते संकेतक — वह भी बिना किसी कस्टम CSS के।
animate-spin
animate-spin किसी तत्व को लगातार एक समान गति से घुमाता है — प्रति सेकंड 360 डिग्री का एक पूरा घुमाव। यह लोडिंग स्पिनर के लिए मानक उपयोगिता है। किसी गोलाकार तत्व या SVG आइकन पर इसे लागू करके चल रहे ऑपरेशन का संकेत दें। क्लास हटाए जाने तक एनीमेशन अनिश्चित समय तक दोहराता रहता है। आम तौर पर इसे ऐसे SVG रिंग आइकन के साथ जोड़ा जाता है जिसमें एक खाली हिस्सा हो, जिससे परिचित स्पिनर जैसा रूप बनता है।
<!-- Loading spinner using animate-spin -->
<svg class="animate-spin h-5 w-5 text-blue-600"
xmlns="http://www.w3.org/2000/svg"
fill="none" viewBox="0 0 24 24">
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
<path class="opacity-75" fill="currentColor"
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z">
</path>
</svg>
<!-- Button with spinner -->
<button class="flex items-center gap-2 bg-blue-600 text-white px-4 py-2 rounded-lg" disabled>
<svg class="animate-spin h-4 w-4" ...></svg>
Loading...
</button>animate-ping
animate-ping लहर या रडार-स्कैन जैसा प्रभाव बनाता है — तत्व बड़ा होता जाता है और दोहराव में धीरे-धीरे गायब होता जाता है। इसका उपयोग आम तौर पर स्थिर तत्व के ऊपर रखे गए सूचना-बिंदु या गतिविधि संकेतक के रूप में किया जाता है। पिंग करने वाले तत्व को relative वाले रैपर का उपयोग करके वास्तविक तत्व के ऊपर पूर्ण स्थिति में रखना चाहिए। यह प्रभाव अत्यधिक ध्यान भटकाए बिना सूचना की ओर नज़र आकर्षित करता है।
<!-- Notification badge with ping effect -->
<div class="relative inline-flex">
<button class="p-2 rounded-full bg-gray-100">
<!-- Bell icon -->
<svg class="w-5 h-5 text-gray-700" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9" />
</svg>
</button>
<!-- Ping indicator -->
<span class="absolute top-0 right-0 -mt-0.5 -mr-0.5">
<span class="animate-ping absolute inline-flex h-3 w-3 rounded-full bg-red-400 opacity-75"></span>
<span class="relative inline-flex rounded-full h-3 w-3 bg-red-500"></span>
</span>
</div>animate-pulse
animate-pulse किसी तत्व की अपारदर्शिता को धीरे-धीरे आगे-पीछे बदलता है — 2 सेकंड के चक्र में पूरी अपारदर्शिता से 50% तक और फिर वापस। यह स्केलेटन लोडर के लिए एकदम सही एनीमेशन है, जो सामग्री लोड होने के दौरान उसका आकार दिखाते हैं। इसे सामग्री के लेआउट से मेल खाने वाले धूसर प्लेसहोल्डर ब्लॉक पर लागू करें। यह सूक्ष्म धड़कन बिना ध्यान भटकाए लोडिंग का संकेत देती है।
<!-- Skeleton loader using animate-pulse -->
<div class="p-6 space-y-4">
<!-- Avatar + title skeleton -->
<div class="flex items-center gap-3">
<div class="animate-pulse bg-gray-200 rounded-full h-10 w-10"></div>
<div class="space-y-2 flex-1">
<div class="animate-pulse bg-gray-200 rounded h-4 w-1/3"></div>
<div class="animate-pulse bg-gray-200 rounded h-3 w-1/4"></div>
</div>
</div>
<!-- Content lines skeleton -->
<div class="space-y-2">
<div class="animate-pulse bg-gray-200 rounded h-4 w-full"></div>
<div class="animate-pulse bg-gray-200 rounded h-4 w-5/6"></div>
<div class="animate-pulse bg-gray-200 rounded h-4 w-4/5"></div>
</div>
</div>animate-bounce
animate-bounce किसी तत्व को उछलती हुई गति में ऊपर-नीचे ले जाता है। यह ऐसी cubic-bezier टाइमिंग फ़ंक्शन का उपयोग करता है जो हर उछाल के शीर्ष पर स्वाभाविक रूप से गति घटाती है। इसके सामान्य उपयोगों में उपयोगकर्ताओं को स्क्रॉल करने के लिए प्रेरित करने वाला नीचे का तीर, चैट बबल का टाइपिंग संकेतक या नई सामग्री की ओर ध्यान आकर्षित करने वाला सूचना आइकन शामिल हैं। डिफ़ॉल्ट रूप से उछाल लगातार चलता रहता है।
<!-- Scroll indicator using animate-bounce -->
<div class="flex flex-col items-center gap-2 mt-16">
<p class="text-sm text-gray-500">Scroll to explore</p>
<svg class="animate-bounce w-6 h-6 text-gray-400"
fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
</svg>
</div>
<!-- Typing indicator (three bouncing dots) -->
<div class="flex gap-1 p-3 bg-gray-100 rounded-2xl rounded-tl-none w-16">
<div class="animate-bounce h-2 w-2 bg-gray-400 rounded-full" style="animation-delay: 0ms"></div>
<div class="animate-bounce h-2 w-2 bg-gray-400 rounded-full" style="animation-delay: 150ms"></div>
<div class="animate-bounce h-2 w-2 bg-gray-400 rounded-full" style="animation-delay: 300ms"></div>
</div>एनीमेशन रोकने के लिए animate-none का उपयोग
animate-none किसी तत्व से सभी सक्रिय एनीमेशन हटा देता है। यह कुछ स्क्रीन आकारों या स्थितियों में एनीमेशन अक्षम करने के लिए प्रतिक्रियाशील या स्थिति वैरिएंट के साथ उपयोगी है। उदाहरण के लिए, कम गति पसंद करने वाले उपयोगकर्ताओं के लिए सभी एनीमेशन अक्षम करने हेतु motion-reduce:animate-none का उपयोग कर सकते हैं, या डेटा लोड हो जाने के बाद JavaScript से क्लास बदलकर लोडिंग स्पिनर रोक सकते हैं।
<!-- Stop animation for reduced-motion users -->
<svg class="animate-spin motion-reduce:animate-none h-5 w-5 text-blue-600">
...
</svg>
<!-- Stop animation at large screens -->
<div class="animate-pulse lg:animate-none bg-gray-200 rounded h-4 w-48">
<!-- Only pulses on mobile/tablet, static on desktop -->
</div>
<!-- JavaScript: remove animation when done -->
<!-- spinner.classList.remove('animate-spin'); -->animate को सशर्त रेंडरिंग के साथ संयोजित करना
घटक-आधारित फ़्रेमवर्क में, आप आम तौर पर लोडिंग स्थिति के आधार पर घूमती या धड़कती अवस्था को सशर्त रूप से दिखाते हैं। एनीमेशन क्लास उस स्केलेटन या लोडिंग घटक का हिस्सा होती है जो डेटा प्राप्त होने के दौरान रेंडर होता है, और प्राप्ति पूरी होने पर वास्तविक सामग्री से बदल दिया जाता है। यह तरीका प्रोग्राम के माध्यम से क्लास जोड़ने या हटाने के बजाय एनीमेशन संबंधी चिंताओं को लोडिंग स्थिति के UI में रखता है।
// React: conditional rendering for loading state
function UserCard({ user, isLoading }) {
if (isLoading) {
return (
<div class="p-6 space-y-3">
<div class="animate-pulse bg-gray-200 rounded-full h-12 w-12"></div>
<div class="animate-pulse bg-gray-200 rounded h-4 w-32"></div>
<div class="animate-pulse bg-gray-200 rounded h-3 w-24"></div>
</div>
);
}
return (
<div class="p-6">
<img src={user.avatar} class="h-12 w-12 rounded-full" />
<p class="font-semibold mt-3">{user.name}</p>
<p class="text-gray-500 text-sm">{user.role}</p>
</div>
);
}एनीमेशन पुनरावृत्ति संख्या और फ़िल मोड
Tailwind के अंतर्निहित एनीमेशन डिफ़ॉल्ट रूप से अनिश्चित समय तक दोहराए जाते हैं। यदि आपको किसी एनीमेशन को निश्चित संख्या में चलाना है (जैसे प्रवेश एनीमेशन के लिए एक बार या ध्यान आकर्षित करने वाली चमक के लिए दो बार), तो आपको CSS कस्टम प्रॉपर्टी या कस्टम एनीमेशन क्लास का उपयोग करना होगा। नियंत्रित पुनरावृत्ति संख्याओं और फ़िल मोड वाले एनीमेशन जोड़ने के लिए अपने कॉन्फ़िगरेशन में theme.extend.keyframes और theme.extend.animation को विस्तारित करें।
// tailwind.config.js — add a one-shot animation
module.exports = {
theme: {
extend: {
keyframes: {
'shake': {
'0%, 100%': { transform: 'translateX(0)' },
'20%, 60%': { transform: 'translateX(-6px)' },
'40%, 80%': { transform: 'translateX(6px)' },
},
},
animation: {
'shake': 'shake 0.5s ease-in-out 1', // runs once
},
},
},
};
<!-- Usage -->
<input class="animate-shake border-red-500" type="text" placeholder="Shake on error" />अंतर्निहित एनीमेशन को क्रमिक बनाना
समान स्तर वाले तत्वों में एनीमेशन विलंब को क्रमिक रूप से बदलने पर आकर्षक झरने जैसा प्रभाव बनता है। Tailwind में अंतर्निहित क्रमिकता उपयोगिता नहीं है, लेकिन आप प्रत्येक animation-delay मान सेट करने के लिए इनलाइन style एट्रिब्यूट का उपयोग कर सकते हैं। वस्तुओं की सूची के लिए, प्रत्येक वस्तु के विलंब में 50–100ms का अंतर रखें। कुल क्रमिक विलंब 300ms से कम रखें, ताकि उपयोगकर्ताओं को अंतिम वस्तु के दिखाई देने तक प्रतीक्षा न करनी पड़े।
<!-- Staggered skeleton loaders -->
<ul class="space-y-3">
<li class="animate-pulse bg-gray-200 rounded h-12" style="animation-delay: 0ms"></li>
<li class="animate-pulse bg-gray-200 rounded h-12" style="animation-delay: 75ms"></li>
<li class="animate-pulse bg-gray-200 rounded h-12" style="animation-delay: 150ms"></li>
<li class="animate-pulse bg-gray-200 rounded h-12" style="animation-delay: 225ms"></li>
</ul>
<!-- Staggered bounce dots -->
<div class="flex gap-1">
<div class="animate-bounce w-2 h-2 bg-blue-500 rounded-full" style="animation-delay: 0ms"></div>
<div class="animate-bounce w-2 h-2 bg-blue-500 rounded-full" style="animation-delay: 150ms"></div>
<div class="animate-bounce w-2 h-2 bg-blue-500 rounded-full" style="animation-delay: 300ms"></div>
</div>प्रतिक्रियाशील रूप से एनीमेशन लागू करना
सभी Tailwind उपयोगिताओं की तरह, animate क्लास प्रतिक्रियाशील प्रीफ़िक्स के साथ काम करती हैं। बड़ी स्क्रीन पर एनीमेशन अक्षम कर सकते हैं, जहाँ लोडिंग स्थिति कम आवश्यक हो सकती है, या अलग-अलग ब्रेकपॉइंट पर अलग एनीमेशन लागू कर सकते हैं। व्यूपोर्ट के बढ़ने के साथ एनीमेशन को क्रमशः अक्षम करने और डेस्कटॉप पर अनुभव को हल्का बनाए रखने के लिए sm:, md:, lg: प्रीफ़िक्स को animate-none के साथ उपयोग करें।
<!-- Animate on mobile, static on desktop -->
<div class="animate-pulse md:animate-none bg-gray-200 rounded h-12 w-full">
Pulses on mobile, static on md+ screens
</div>
<!-- Spinner only visible on small screens -->
<svg class="animate-spin sm:hidden h-5 w-5 text-blue-600" ...></svg>
<!-- Use different animations at different breakpoints -->
<div class="animate-bounce md:animate-ping lg:animate-spin h-4 w-4 rounded-full bg-green-500">
Different animation per breakpoint
</div>वास्तविक दुनिया का लोडिंग पैटर्न
उत्पादन-स्तर का लोडिंग अनुभव कई एनीमेशन उपयोगिताओं को जोड़ता है। मुख्य सामग्री क्षेत्र प्लेसहोल्डर ब्लॉक पर animate-pulse वाले स्केलेटन को दिखाता है। स्थिति संकेतक में animate-ping का उपयोग होता है। यदि बटन या हेडर में दिखाई देने वाला स्पिनर है, तो स्पिनर SVG पर animate-spin लागू किया जाता है। सामग्री लोड होते ही सभी एनीमेशन रुक जाने चाहिए और उनकी जगह वास्तविक सामग्री आ जानी चाहिए, बिना किसी झटकेदार बदलाव के।
<!-- Full loading state with multiple animations -->
<div class="border border-gray-200 rounded-xl p-6">
<!-- Status indicator -->
<div class="flex items-center gap-2 mb-4">
<div class="relative">
<span class="animate-ping absolute h-3 w-3 rounded-full bg-blue-400 opacity-75"></span>
<span class="h-3 w-3 rounded-full bg-blue-600 block relative"></span>
</div>
<span class="text-sm text-gray-500">Fetching data...</span>
<svg class="animate-spin h-4 w-4 text-blue-500 ml-auto" fill="none" viewBox="0 0 24 24">
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
</svg>
</div>
<!-- Skeleton content -->
<div class="space-y-3">
<div class="animate-pulse h-4 bg-gray-200 rounded w-3/4"></div>
<div class="animate-pulse h-4 bg-gray-200 rounded w-1/2"></div>
<div class="animate-pulse h-4 bg-gray-200 rounded w-5/6"></div>
</div>
</div>त्वरित जाँच
Tailwind के अंतर्निहित कीफ़्रेम एनीमेशन की अपनी समझ जाँचें।
पाठ का पुनरावलोकन
इस पाठ में आपने सीखा: animate-spin लोडिंग स्पिनर बनाता है, animate-ping सूचना की लहरें बनाता है, animate-pulse स्केलेटन लोडर बनाता है और animate-bounce लंबवत उछलने वाले संकेतक बनाता है। कम गति पसंद करने वाले उपयोगकर्ताओं के लिए एनीमेशन अक्षम करने हेतु motion-reduce:animate-none का उपयोग करें। अब हम Tailwind कॉन्फ़िगरेशन के माध्यम से कस्टम कीफ़्रेम एनीमेशन बनाएँगे।
एआई शिक्षक के साथ HTML सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “अंतर्निर्मित कीफ़्रेम ऐनिमेशन” पाठ निःशुल्क है?
हाँ—“अंतर्निर्मित कीफ़्रेम ऐनिमेशन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Tailwind CSS Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Tailwind CSS Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“अंतर्निर्मित कीफ़्रेम ऐनिमेशन” में मैं क्या सीखूँगा?
सामान्य लोडिंग और ध्यान आकर्षित करने वाले प्रतिरूपों के लिए Tailwind के अंतर्निर्मित animate-spin, animate-ping, animate-pulse और animate-bounce लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Tailwind CSS Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Tailwind CSS Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Tailwind CSS Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“अंतर्निर्मित कीफ़्रेम ऐनिमेशन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Tailwind CSS Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Tailwind CSS Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- संक्रमण यूटिलिटी
- अवधि और ईज़िंग
- अंतर्निर्मित कीफ़्रेम ऐनिमेशन
- कॉन्फ़िगरेशन में कस्टम ऐनिमेशन