इस पोस्ट में यह जानें कि CodePen पर मिलने वाले कुछ लोकप्रिय ऐनिमेशन कैसे बनाए गए हैं. ये सभी ऐनिमेशन, परफ़ॉर्मेंस देने वाली उन तकनीकों का इस्तेमाल करते हैं जिनके बारे में इस सेक्शन में मौजूद दूसरे लेखों में बताया गया है.
यह जानने के लिए कि कुछ ऐनिमेशन धीमे क्यों होते हैं? देखें ये सुझाव और ऐनिमेशन गाइड देखें.
विज़र्ड लोड होने का ऐनिमेशन
CodePen पर विज़र्ड का लोडिंग ऐनिमेशन देखना
लोडिंग का यह ऐनिमेशन पूरी तरह से सीएसएस की मदद से बनाया गया है. इमेज के साथ-साथ पूरा ऐनिमेशन सीएसएस और एचटीएमएल में बनाया गया है, कोई चित्र या JavaScript नहीं. Chrome DevTools का इस्तेमाल करके, यह समझा जा सकता है कि इसे कैसे बनाया गया और इसकी परफ़ॉर्मेंस कैसी है.
Chrome DevTools की मदद से ऐनिमेशन की जांच करें
ऐनिमेशन के चलने के दौरान, Chrome DevTools में परफ़ॉर्मेंस टैब खोलें और ऐनिमेशन के कुछ सेकंड के हिस्से को रिकॉर्ड करें. आपको जवाब में दिखेगा कि इस ऐनिमेशन को चलाते समय ब्राउज़र, लेआउट या पेंट से जुड़ा कोई काम नहीं कर रहा.
यह जानने के लिए कि लेआउट और पेंट किए बिना ऐनिमेशन कैसे पूरा किया गया, Chrome DevTools में किसी भी तरह के हिलने-डुलने वाले एलिमेंट की जांच करेगा. ऐनिमेशन वाले अलग-अलग एलिमेंट ढूंढने के लिए, ऐनिमेशन पैनल का इस्तेमाल किया जा सकता है, किसी भी एलिमेंट पर क्लिक करने से, वह DOM में हाइलाइट हो जाएगा.
उदाहरण के लिए, त्रिभुज चुनें, और देखें कि एलिमेंट का बॉक्स हवा में कैसे बदल जाता है, स्पिन होने के बाद, शुरुआती पोज़िशन पर वापस आ जाता है.
अगर कोई एलिमेंट चुना गया है, तो स्टाइल पैनल को देखें. यहां आप त्रिभुज का आकार बनाने वाला सीएसएस देख सकते हैं, जिस ऐनिमेशन का इस्तेमाल किया जा रहा है.
यह कैसे काम करता है
जनरेट किए गए कॉन्टेंट को जोड़ने के लिए, ट्राईऐंगल ::after
स्यूडो-एलिमेंट का इस्तेमाल करके बनाया गया है,
आकृति बनाने के लिए बॉर्डर का उपयोग करें.
.triangle {
position: absolute;
bottom: -62px;
left: -10px;
width: 110px;
height: 110px;
border-radius: 50%;
}
.triangle::after {
content: "";
position: absolute;
top: 0;
right: -10px;
width: 0;
height: 0;
border-style: solid;
border-width: 0 28px 48px 28px;
border-color: transparent transparent #89beb3 transparent;
}
ऐनिमेशन को सीएसएस की इस लाइन के साथ जोड़ा गया है,
animation: path_triangle 10s ease-in-out infinite;
Chrome DevTools में स्टाइल पैनल को नीचे की ओर स्क्रोल करके, मुख्य-फ़्रेम देखे जा सकते हैं.
यहां आपको पता चलेगा कि एलिमेंट की जगह बदलने और उसे घुमाने के लिए, transform
का इस्तेमाल करके ऐनिमेशन बनाया गया है.
transform
प्रॉपर्टी, ऐनिमेशन गाइड में बताई गई प्रॉपर्टी में से एक है,
जिसके कारण ब्राउज़र लेआउट या पेंट ऑपरेशन नहीं करता (जो धीमे एनिमेशन के मुख्य कारण हैं).
@keyframes path_triangle {
0% {
transform: translateY(0);
}
10% {
transform: translateY(-172px) translatex(10px) rotate(-10deg);
}
55% {
transform: translateY(-172px) translatex(10px) rotate(-365deg);
}
58% {
transform: translateY(-172px) translatex(10px) rotate(-365deg);
}
63% {
transform: rotate(-360deg);
}
}
इस ऐनिमेशन के अलग-अलग मूविंग पार्ट में एक जैसी तकनीकों का इस्तेमाल किया गया है. इसकी वजह से मुश्किल ऐनिमेशन तैयार होता है, जो आसानी से चलता है.
पल्सटिंग सर्कल
CodePen पर पल्सटिंग सर्कल देखना
कभी-कभी इस तरह के ऐनिमेशन का इस्तेमाल, पेज पर मौजूद किसी चीज़ की ओर ध्यान खींचने के लिए किया जाता है. ऐनिमेशन को समझने के लिए, Firefox DevTools का इस्तेमाल करें.
Firefox DevTools की मदद से ऐनिमेशन की जांच करें
ऐनिमेशन के चलने पर, Firefox DevTools में परफ़ॉर्मेंस टैब खोलें और ऐनिमेशन के कुछ सेकंड के हिस्से को रिकॉर्ड करें. रिकॉर्डिंग बंद करें, आपको वॉटरफ़ॉल में स्टाइल का फिर से आकलन करें के लिए कोई एंट्री नहीं दिखेगी. अब आपको पता है कि यह ऐनिमेशन स्टाइल को दोबारा कैलकुलेट नहीं करता, और इसलिए, लेआउट और पेंट ऑपरेशन भी.
Firefox DevTools में बने रहने से सर्कल की जांच करके पता चलता है कि यह ऐनिमेशन कैसे काम करता है.
pulsating-circle
की क्लास वाला <div>
, सर्कल की पोज़िशन दिखाता है,
हालाँकि, वह अपने आप में कोई वृत्त नहीं बनाता.
.pulsating-circle {
position: absolute;
left: 50%;
top: 50%;
transform: translateX(-50%) translateY(-50%);
width: 30px;
height: 30px;
}
दिखने वाले सर्कल और ऐनिमेशन, ::before
और ::after
नकली एलिमेंट का इस्तेमाल करके हासिल किए जाते हैं.
::before
एलिमेंट एक ओपेक रिंग बनाता है, जो सफ़ेद गोले के बाहर तक फैला होता है,
pulse-ring
नाम के ऐनिमेशन का इस्तेमाल करके,
इसके बाद, transform: scale
और opacity
दिखने लगते हैं.
.pulsating-circle::before {
content: '';
position: relative;
display: block;
width: 300%;
height: 300%;
box-sizing: border-box;
margin-left: -100%;
margin-top: -100%;
border-radius: 45px;
background-color: #01a4e9;
animation: pulse-ring 1.25s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;
}
@keyframes pulse-ring {
0% {
transform: scale(0.33);
}
80%, 100% {
opacity: 0;
}
}
Firefox DevTools में ऐनिमेशन पैनल चुनकर आप यह भी देख सकते हैं कि कौनसी प्रॉपर्टी ऐनिमेट की जा रही हैं. इसके बाद, आपको इस्तेमाल किए जा रहे ऐनिमेशन का विज़ुअलाइज़ेशन दिखेगा, और जिन प्रॉपर्टी को ऐनिमेट किया जा रहा है.
सफ़ेद गोला बनाया जाता है और ::after
स्यूडो-एलिमेंट का इस्तेमाल करके ऐनिमेशन बनाया जाता है.
pulse-dot
ऐनिमेशन में, ऐनिमेशन के दौरान डॉट को बढ़ाने और छोटा करने के लिए, transform: scale
का इस्तेमाल किया जाता है.
.pulsating-circle::after {
content: '';
position: absolute;
left: 0;
top: 0;
display: block;
width: 100%;
height: 100%;
background-color: white;
border-radius: 15px;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.3);
animation: pulse-dot 1.25s cubic-bezier(0.455, 0.03, 0.515, 0.955) -0.4s infinite;
}
@keyframes pulse-dot {
0% {
transform: scale(0.8);
}
50% {
transform: scale(1);
}
100% {
transform: scale(0.8);
}
}
इस तरह के ऐनिमेशन का इस्तेमाल आपके ऐप्लिकेशन में कई जगहों पर किया जा सकता है, यह ज़रूरी है कि इन छोटी-छोटी चीज़ों से आपके ऐप्लिकेशन की पूरी परफ़ॉर्मेंस पर कोई असर न पड़े.
प्योर सीएसएस 3D स्फ़ीयर
CodePen पर प्योर सीएसएस 3D स्फ़ीयर देखना
यह ऐनिमेशन काफ़ी पेचीदा लगता है, हालांकि यह उन तकनीकों का इस्तेमाल करता है जिन्हें हम पिछले उदाहरणों में देख चुके हैं. एलिमेंट की बड़ी संख्या को ऐनिमेट करने की वजह से यह जटिलता होती है.
Chrome DevTools खोलें और plane
क्लास वाला कोई एलिमेंट चुनें.
यह गोला, घूमने वाले समतलों और तीलियों से बना है.
ये हवाई जहाज़ और प्रवक्ता एक रैपर <div>
के अंदर हैं,
और यह एलिमेंट transform: rotate3d
का इस्तेमाल करके घूम रहा है.
.sphere-wrapper {
transform-style: preserve-3d;
width: 300px;
height: 300px;
position: relative;
animation: rotate3d 10s linear infinite;
}
@keyframes rotate3d {
0% {
transform: rotate3d(1, 1, 1, 0deg);
}
25% {
transform: rotate3d(1, 1, 1, 90deg);
}
50% {
transform: rotate3d(1, 1, 1, 180deg);
}
75% {
transform: rotate3d(1, 1, 1, 270deg);
}
100% {
transform: rotate3d(1, 1, 1, 360deg);
}
}
बिंदुओं को plane
और spoke
एलिमेंट में नेस्ट किया जा सकता है,
वे एक ऐनिमेशन का इस्तेमाल करते हैं, जिसमें ट्रांसफ़ॉर्म की सुविधा का इस्तेमाल करके उन्हें स्केल और अनुवाद किया जाता है.
इससे पल्सिंग इफ़ेक्ट होता है.
.spoke-15 .dot,
.spoke-21 .dot {
animation: pulsate 0.5s infinite 0.83333333s alternate both;
background-color: #55ffee;
}
@-webkit-keyframes pulsate {
0% {
transform: rotateX(90deg) scale(0.3) translateZ(20px);
}
100% {
transform: rotateX(90deg) scale(1) translateZ(0px);
}
}
इस ऐनिमेशन को बनाने का काम सही समय पर सही होना चाहिए, ताकि टर्निंग ऐंड पल्सिंग इफ़ेक्ट लागू किया जा सके. ये ऐनिमेशन काफ़ी आसान होते हैं, और बहुत अच्छा परफ़ॉर्म करने वाले तरीकों का इस्तेमाल करें.
Chrome DevTools खोलकर और इसके चलने के दौरान परफ़ॉर्मेंस को रिकॉर्ड करके, यह देखा जा सकता है कि यह ऐनिमेशन कैसा परफ़ॉर्म कर रहा है. शुरुआती लोड के बाद, ऐनिमेशन लेआउट या पेंट ट्रिगर नहीं कर रहा है, और अच्छे से काम करता है.
नतीजा
इन उदाहरणों से यह देखा जा सकता है कि परफ़ॉर्मेंस देने वाले तरीकों का इस्तेमाल करके, कुछ प्रॉपर्टी को ऐनिमेट करके कैसे कुछ बहुत अच्छे ऐनिमेशन बनाए जा सकते हैं. डिफ़ॉल्ट रूप से, ऐनिमेशन गाइड में बताए गए परफ़ॉर्म करने वाले तरीके इस्तेमाल किए जाते हैं आप पेज को धीमा करने की कम चिंताओं के साथ, अपनी पसंद के मुताबिक इफ़ेक्ट तैयार करने में अपना समय लगा सकते हैं.