Veb-dasturchilar uchun CSS scroll-driven animatsiyalar oqimini boshqarish boʻyicha qoʻllanma. Dinamik, yoʻnalishga sezgir foydalanuvchi tajribasini yaratish uchun animation-direction va animation-timeline'dan foydalanishni oʻrganing.
CSS Scroll-Driven Animatsiya Yo'nalishini Boshqarish: Oqim Nazoratini Chuqur O'rganish
Ko'p yillar davomida foydalanuvchining aylantirish (scroll) holatiga javob beradigan animatsiyalarni yaratish JavaScript sohasi edi. GSAP va ScrollMagic kabi kutubxonalar muhim vositalarga aylandi, ammo ular ko'pincha asosiy thread'da ishlashi va ba'zan qotib qolishlarga olib kelishi sababli ishlash samaradorligiga salbiy ta'sir ko'rsatardi. Veb platformasi rivojlandi va bugungi kunda bizda brauzerning o'zida qurilgan inqilobiy, samarali va deklarativ yechim mavjud: CSS Scroll-Driven Animatsiyalari.
Ushbu kuchli yangi modul bizga animatsiya jarayonini konteynerning aylantirish holatiga yoki elementning ko'rish sohasidagi ko'rinishiga to'g'ridan-to'g'ri bog'lash imkonini beradi. Bu ulkan qadam bo'lsa-da, u yangi aqliy modelni taqdim etadi. O'zlashtirish uchun eng muhim jihatlardan biri bu foydalanuvchi oldinga va orqaga aylantirganda animatsiyaning o'zini qanday tutishini nazorat qilishdir. Elementni pastga aylantirganda paydo bo'lishini va yuqoriga aylantirganda g'oyib bo'lishini qanday ta'minlash mumkin? Javob yangi, kuchli maqsadga ega bo'lgan tanish CSS xususiyatida yotadi: animation-direction.
Ushbu to'liq qo'llanma sizni scroll-driven animatsiyalar oqimi va yo'nalishini boshqarish bo'yicha chuqur sayohatga olib chiqadi. Biz animation-direction qanday qilib yangicha qo'llanilishini o'rganamiz, uning amaliy misollar bilan ishlashini tahlil qilamiz va sizni intuitiv va ajoyib ko'rinadigan murakkab, yo'nalishga sezgir foydalanuvchi interfeyslarini yaratish uchun kerakli bilimlar bilan qurollantiramiz.
Scroll-Driven Animatsiyalarining Asoslari
Animatsiyalarimiz yo'nalishini nazorat qilishdan oldin, ularni harakatga keltiruvchi asosiy mexanizmlarni tushunishimiz kerak. Agar siz bu mavzuga yangi bo'lsangiz, ushbu bo'lim muhim kirish vazifasini o'taydi. Agar siz allaqachon tanish bo'lsangiz, bu asosiy xususiyatlarni takrorlash uchun ajoyib imkoniyat.
Scroll-Driven Animatsiyalar nima?
Aslida, scroll-driven animatsiya - bu jarayoni soatga (ya'ni, vaqtga) emas, balki scroll vaqt jadvali jarayoniga bog'liq bo'lgan animatsiyadir. Animatsiya, aytaylik, 2 soniya davom etish o'rniga, aylantirish harakati davomida davom etadi.
Blog postining yuqori qismidagi taraqqiyot chizig'ini tasavvur qiling. An'anaga ko'ra, siz scroll hodisalarini tinglash va chiziq kengligini yangilash uchun JavaScript'dan foydalanasiz. Scroll-driven animatsiyalar bilan siz shunchaki brauzerga aytishingiz mumkin: "Ushbu taraqqiyot chizig'ining kengligini butun sahifaning aylantirish holatiga bog'la." Shundan so'ng brauzer barcha murakkab hisob-kitoblarni va yangilanishlarni yuqori darajada optimallashtirilgan tarzda, ko'pincha asosiy thread'dan tashqarida bajaradi, bu esa mukammal silliq animatsiyaga olib keladi.
Asosiy afzalliklar:
- Samaradorlik: Ishni asosiy thread'dan olib tashlash orqali biz boshqa JavaScript vazifalari bilan ziddiyatlardan qochamiz, bu esa silliqroq, qotib qolmaydigan animatsiyalarga olib keladi.
- Soddalik: Bir paytlar o'nlab qator JavaScript talab qilgan narsaga endi bir necha qator deklarativ CSS bilan erishish mumkin.
- Yaxshilangan foydalanuvchi tajribasi: Foydalanuvchining kiritishi bilan to'g'ridan-to'g'ri boshqariladigan animatsiyalar yanada sezgir va jozibali his qilinadi, bu foydalanuvchi va interfeys o'rtasida mustahkamroq aloqa yaratadi.
Asosiy o'yinchilar: `animation-timeline` va Vaqt Jadvallari
Bu sehr animation-timeline xususiyati orqali amalga oshiriladi, bu animatsiyaga soat o'rniga aylantirish jarayoniga ergashishni aytadi. Siz duch keladigan vaqt jadvallarining ikki asosiy turi mavjud:
1. Scroll Progress Timeline (Aylantirish Jarayoni Vaqt Jadvali): Ushbu vaqt jadvali aylantirish konteyneri ichidagi aylantirish holatiga bog'liq. U aylantirish diapazonining boshidan (0%) oxirigacha (100%) bo'lgan jarayonni kuzatib boradi.
Bu scroll() funksiyasi yordamida aniqlanadi:
animation-timeline: scroll(root); — Hujjatning ko'rish sohasining (standart aylantirgich) aylantirish holatini kuzatadi.
animation-timeline: scroll(nearest); — Eng yaqin ota-ona aylantirish konteynerining aylantirish holatini kuzatadi.
Misol: Oddiy o'qish taraqqiyoti chizig'i.
.progress-bar {
transform-origin: 0 50%;
transform: scaleX(0);
animation: fill-progress auto linear;
animation-timeline: scroll(root);
}
@keyframes fill-progress {
to { transform: scaleX(1); }
}
Bu yerda fill-progress animatsiyasi umumiy sahifa aylantirilishi bilan boshqariladi. Yuqoridan pastga aylantirganingizda, animatsiya 0% dan 100% gacha rivojlanadi va chiziqni 0 dan 1 gacha kattalashtiradi.
2. View Progress Timeline (Ko'rinish Jarayoni Vaqt Jadvali): Ushbu vaqt jadvali elementning aylantirish konteyneri (ko'pincha ko'rish sohasi deb ataladi) ichidagi ko'rinishiga bog'liq. U elementning ko'rish sohasiga kirishi, kesib o'tishi va chiqishi davomidagi yo'lini kuzatib boradi.
Bu view() funksiyasi yordamida aniqlanadi:
animation-timeline: view();
Misol: Ko'rinadigan bo'lganda asta-sekin paydo bo'ladigan element.
.reveal-on-scroll {
opacity: 0;
animation: fade-in auto linear;
animation-timeline: view();
}
@keyframes fade-in {
to { opacity: 1; }
}
Bu holda, fade-in animatsiyasi element ko'rish sohasiga kira boshlaganda boshlanadi va u to'liq ko'rinadigan bo'lganda tugaydi. Vaqt jadvalining jarayoni to'g'ridan-to'g'ri shu ko'rinishga bog'liq.
Asosiy Konseptsiya: Animatsiya Yo'nalishini Boshqarish
Endi asoslarni tushunganimizdan so'ng, markaziy savolga murojaat qilaylik: bu animatsiyalarni aylantirish yo'nalishiga qanday javob berishga majbur qilamiz? Foydalanuvchi pastga aylantiradi va element paydo bo'ladi. Ular yuqoriga aylantirganda, element g'oyib bo'lishi kerak. Ushbu ikki tomonlama xatti-harakat intuitiv interfeyslarni yaratish uchun zarurdir. Aynan shu yerda animation-direction o'zining katta qaytishini amalga oshiradi.
`animation-direction`ni qayta ko'rib chiqish
An'anaviy, vaqtga asoslangan CSS animatsiyalarida animation-direction animatsiyaning bir necha takrorlanish davomida o'zining kalit kadrlaridan (keyframes) qanday o'tishini nazorat qiladi. Siz uning qiymatlari bilan tanish bo'lishingiz mumkin:
normal: Har bir siklda 0% dan 100% gacha oldinga ijro etiladi. (Standart)reverse: Har bir siklda 100% dan 0% gacha orqaga ijro etiladi.alternate: Birinchi siklda oldinga, ikkinchisida orqaga va hokazo ijro etiladi.alternate-reverse: Birinchi siklda orqaga, ikkinchisida oldinga va hokazo ijro etiladi.
Scroll vaqt jadvalini qo'llaganingizda, "takrorlanishlar" va "sikllar" tushunchasi deyarli yo'qoladi, chunki animatsiya jarayoni to'g'ridan-to'g'ri bitta, uzluksiz vaqt jadvaliga (masalan, yuqoridan pastga aylantirish) bog'liq. Brauzer animation-directionni vaqt jadvali jarayoni va animatsiya jarayoni o'rtasidagi munosabatni aniqlash uchun zukkolik bilan qayta ishlatadi.
Yangi Aqliy Model: Vaqt Jadvali Jarayoni vs. Animatsiya Jarayoni
Buni to'liq anglash uchun siz vaqt haqida o'ylashni to'xtatib, vaqt jadvali jarayoni nuqtai nazaridan o'ylashni boshlashingiz kerak. Scroll vaqt jadvali 0% dan (aylantirish maydonining yuqori qismi) 100% gacha (aylantirish maydonining pastki qismi) davom etadi.
- Pastga/oldinga aylantirish: Vaqt jadvali jarayonini oshiradi (masalan, 10% dan 50% gacha).
- Yuqoriga/orqaga aylantirish: Vaqt jadvali jarayonini kamaytiradi (masalan, 50% dan 10% gacha).
animation-direction endi sizning @keyframeslaringiz ushbu vaqt jadvali jarayoniga qanday mos kelishini belgilaydi.
animation-direction: normal; (Standart)
Bu to'g'ridan-to'g'ri, 1-ga-1 moslikni yaratadi.
- Vaqt jadvali jarayoni 0% bo'lganda, animatsiya o'zining 0% kalit kadrida bo'ladi.
- Vaqt jadvali jarayoni 100% bo'lganda, animatsiya o'zining 100% kalit kadrida bo'ladi.
Shunday qilib, siz pastga aylantirganingizda, animatsiya oldinga ijro etiladi. Siz yuqoriga aylantirganingizda, vaqt jadvali jarayoni kamayadi, shuning uchun animatsiya samarali ravishda teskari ijro etiladi. Sehr shu yerda! Ikki tomonlama xatti-harakat o'z-o'zidan mavjud. Siz qo'shimcha hech narsa qilishingiz shart emas.
animation-direction: reverse;
Bu teskari moslikni yaratadi.
- Vaqt jadvali jarayoni 0% bo'lganda, animatsiya o'zining 100% kalit kadrida bo'ladi.
- Vaqt jadvali jarayoni 100% bo'lganda, animatsiya o'zining 0% kalit kadrida bo'ladi.
Bu shuni anglatadiki, siz pastga aylantirganingizda, animatsiya orqaga ijro etiladi (o'zining oxirgi holatidan boshlang'ich holatiga). Siz yuqoriga aylantirganingizda, vaqt jadvali jarayoni kamayadi, bu esa animatsiyaning oldinga ijro etilishiga sabab bo'ladi (o'zining boshlang'ich holatidan oxirgi holatiga qarab).
Bu oddiy o'zgartirish juda kuchli. Keling, buni amalda ko'rib chiqaylik.
Amaliy Qo'llash va Misollar
Nazariya ajoyib, lekin bu tushunchalarni mustahkamlash uchun ba'zi real misollarni yarataylik. Ularning aksariyati uchun biz view() vaqt jadvalidan foydalanamiz, chunki bu ekranda paydo bo'lganda animatsiyalanadigan UI elementlari uchun keng tarqalgan.
1-holat: Klassik "Aylantirganda paydo bo'lish" effekti
Maqsad: Element pastga aylantirilganda paydo bo'ladi va yuqoriga siljiydi. Yuqoriga qayta aylantirilganda, u g'oyib bo'lishi va pastga qaytishi kerak.
Bu eng keng tarqalgan foydalanish holati va u standart normal yo'nalishi bilan mukammal ishlaydi.
HTML:
<div class="content-box reveal">
<h3>Pastga aylantiring</h3>
<p>Bu quti ko'rinishga animatsiya bilan kiradi.</p>
</div>
CSS:
@keyframes fade-and-slide-in {
from {
opacity: 0;
transform: translateY(50px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.reveal {
/* Animatsiyaning 'from' holatida boshlash */
opacity: 0;
animation: fade-and-slide-in linear forwards;
animation-timeline: view();
/* animation-direction: normal; standart bo'lgani uchun kerak emas */
}
Qanday ishlaydi:
- Biz elementni shaffof va pastroq holatdan (
translateY(50px)) to'liq ko'rinadigan va asl holatiga (translateY(0)) o'tkazadiganfade-and-slide-innomli kalit kadrlarini aniqlaymiz. - Biz bu animatsiyani
.revealelementimizga qo'llaymiz va, eng muhimi, uniview()vaqt jadvaliga bog'laymiz. Shuningdek, vaqt jadvali tugagandan so'ng element o'zining oxirgi holatida qolishini ta'minlash uchunanimation-fill-mode: forwards;dan foydalanamiz. - Yo'nalish
normalbo'lgani uchun, element ko'rish sohasiga kira boshlaganda (vaqt jadvali jarayoni > 0%), animatsiya oldinga ijro etila boshlaydi. - Siz pastga aylantirganingizda, element ko'proq ko'rinadigan bo'ladi, vaqt jadvali jarayoni oshadi va animatsiya o'zining `to` holatiga qarab harakatlanadi.
- Agar siz yuqoriga qaytsangiz, element kamroq ko'rinadigan bo'ladi, vaqt jadvali jarayoni *kamayadi* va brauzer avtomatik ravishda animatsiyani teskari aylantiradi, bu esa uning g'oyib bo'lishiga va pastga siljishiga olib keladi. Siz ikki tomonlama nazoratni tekinga olasiz!
2-holat: "Orqaga qaytarish" yoki "Qayta yig'ish" effekti
Maqsad: Element qismlarga ajratilgan yoki yakuniy holatda boshlanadi va siz pastga aylantirganingizda u o'zining dastlabki, yig'ilgan holatiga animatsiyalanadi.
Bu animation-direction: reverse; uchun mukammal foydalanish holati. Harflari tarqoq boshlanib, siz aylantirganingizda birlashadigan sarlavhani tasavvur qiling.
HTML:
<h1 class="title-reassemble">
<span>S</span><span>A</span><span>L</span><span>O</span><span>M</span>
</h1>
CSS:
@keyframes scatter-letters {
from {
/* Yig'ilgan holat */
transform: translate(0, 0) rotate(0);
opacity: 1;
}
to {
/* Tarqoq holat */
transform: translate(var(--x), var(--y)) rotate(360deg);
opacity: 0;
}
}
.title-reassemble span {
display: inline-block;
animation: scatter-letters linear forwards;
animation-timeline: view(block);
animation-direction: reverse; /* Asosiy tarkibiy qism! */
}
/* Har bir harf uchun tasodifiy oxirgi pozitsiyalarni belgilash */
.title-reassemble span:nth-child(1) { --x: -150px; --y: 50px; }
.title-reassemble span:nth-child(2) { --x: 80px; --y: -40px; }
/* ... va boshqa harflar uchun ham shunday davom etadi */
Qanday ishlaydi:
- Bizning kalit kadrlarimiz,
scatter-letters, animatsiyani yig'ilgan holatdan (`from`) tarqoq holatga (`to`) o'tishini belgilaydi. - Biz bu animatsiyani har bir harf spaniga qo'llaymiz va uni
view()vaqt jadvaliga bog'laymiz. - Biz
animation-direction: reverse;ni o'rnatamiz. Bu moslikni teskari o'zgartiradi. - Sarlavha ekran tashqarisida bo'lganda (vaqt jadvali jarayoni 0%), animatsiya o'zining 100% holatiga (
tokalit kadri) majburlanadi, shuning uchun harflar tarqoq va ko'rinmas bo'ladi. - Siz pastga aylantirib, sarlavha ko'rish sohasiga kirganda, vaqt jadvali 100% ga qarab boradi. Yo'nalish teskari bo'lgani uchun, animatsiya o'zining 100% kalit kadridan *orqaga* 0% kalit kadriga qarab ijro etiladi.
- Natija: siz ko'rish sohasiga aylantirganingizda harflar uchib kiradi va yig'iladi. Yuqoriga qayta aylantirish ularni yana parchalab yuboradi.
3-holat: Ikki tomonlama aylanish
Maqsad: Tishli g'ildirak belgisi pastga aylantirilganda soat yo'nalishi bo'yicha va yuqoriga aylantirilganda soat yo'nalishiga qarshi aylanadi.
Bu standart normal yo'nalishining yana bir oddiy qo'llanilishi.
HTML:
<div class="icon-container">
<img src="gear.svg" class="spinning-gear" alt="Aylanayotgan tishli g'ildirak belgisi" />
</div>
CSS:
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.spinning-gear {
animation: spin linear;
/* Uzluksiz effekt uchun butun hujjat aylantirishiga biriktirish */
animation-timeline: scroll(root);
}
Qanday ishlaydi:
Sahifani pastga aylantirganingizda, ildiz aylantirish vaqt jadvali 0% dan 100% gacha rivojlanadi. normal animatsiya yo'nalishi bilan bu to'g'ridan-to'g'ri `spin` kalit kadrlariga mos keladi, bu esa tishli g'ildirakning 0 dan 360 darajagacha (soat yo'nalishi bo'yicha) aylanishiga sabab bo'ladi. Yuqoriga qayta aylantirganingizda, vaqt jadvali jarayoni kamayadi va animatsiya teskari ijro etiladi, bu esa tishli g'ildirakning 360 dan 0 darajagacha (soat yo'nalishiga qarshi) aylanishiga olib keladi. Bu nafis darajada oddiy.
Oqimni Boshqarishning Ilg'or Texnikalari
normal va reverseni o'zlashtirish jangning 90% ini tashkil etadi. Ammo ijodiy salohiyatni to'liq ochish uchun siz yo'nalish nazoratini vaqt jadvali diapazoni nazorati bilan birlashtirishingiz kerak.
Vaqt Jadvalini Boshqarish: `animation-range`
Standart bo'yicha, view() vaqt jadvali element (sub'ekt) scrollport'ga kirganda boshlanadi va u to'liq o'tib bo'lganda tugaydi. animation-range-* xususiyatlari sizga ushbu boshlanish va tugash nuqtasini qayta aniqlash imkonini beradi.
animation-range-start: [phase] [offset];
animation-range-end: [phase] [offset];
`phase` quyidagi qiymatlarga ega bo'lishi mumkin:
entry: sub'ekt scrollport'ga kira boshlagan payt.cover: sub'ekt scrollport ichida to'liq joylashgan payt.contain: sub'ekt scrollport'ni to'liq o'z ichiga olgan payt (katta elementlar uchun).exit: sub'ekt scrollport'dan chiqa boshlagan payt.
Keling, "Aylantirganda paydo bo'lish" misolimizni takomillashtiraylik. Agar biz uni faqat ekran o'rtasida bo'lganda animatsiyalanishini xohlasak-chi?
CSS:
.reveal-in-middle {
animation: fade-and-slide-in linear forwards;
animation-timeline: view();
animation-direction: normal;
/* Diapazonni boshqarish uchun yangi qo'shimchalar */
animation-range-start: entry 25%;
animation-range-end: exit 75%;
}
Qanday ishlaydi:
animation-range-start: entry 25%;animatsiya (va uning vaqt jadvali)entryfazasining boshida boshlanmasligini anglatadi. U element ko'rish sohasiga 25% kirguncha kutadi.animation-range-end: exit 75%;animatsiya element to'liq chiqishidan oldin o'zining atigi 75% qismi qolganda 100% tugallangan deb hisoblanishini anglatadi.- Bu samarali ravishda ko'rish sohasining o'rtasida animatsiya uchun kichikroq "faol zona" yaratadi. Animatsiya tezroq va markaziyroq sodir bo'ladi. Yo'nalish xatti-harakati ushbu yangi, cheklangan diapazon ichida hali ham mukammal ishlaydi.
Vaqt Jadvali Jarayonida Fikrlash: Birlashtiruvchi Nazariya
Agar chalkashib qolsangiz, ushbu asosiy modelga qayting:
- Vaqt Jadvalini Aniqlang: Siz butun sahifani (
scroll()) yoki elementning ko'rinishini (view()) kuzatayapsizmi? - Diapazonni Aniqlang: Ushbu vaqt jadvali qachon boshlanadi (0%) va tugaydi (100%)? (
animation-rangeyordamida). - Animatsiyani Moslashtiring: Sizning kalit kadrlariz o'sha 0%-100% vaqt jadvali jarayoniga qanday mos keladi? (
animation-directionyordamida).
normal: 0% vaqt jadvali -> 0% kalit kadrlar.reverse: 0% vaqt jadvali -> 100% kalit kadrlar.
Oldinga aylantirish vaqt jadvali jarayonini oshiradi. Orqaga aylantirish uni kamaytiradi. Boshqa hamma narsa shu oddiy qoidalardan kelib chiqadi.
Brauzer Qo'llab-quvvatlashi, Samaradorlik va Eng Yaxshi Amaliyotlar
Har qanday ilg'or veb texnologiyasida bo'lgani kabi, amalga oshirishning amaliy jihatlarini hisobga olish juda muhimdir.
Hozirgi Brauzer Qo'llab-quvvatlashi
2023-yil oxiriga kelib, CSS Scroll-Driven Animatsiyalari Chromium-ga asoslangan brauzerlarda (Chrome, Edge) qo'llab-quvvatlanadi va Firefox hamda Safari'da faol ishlab chiqilmoqda. Eng so'nggi qo'llab-quvvatlash ma'lumotlari uchun har doim CanIUse.com kabi yangilanib turadigan manbalarni tekshiring.
Hozircha, bu animatsiyalarga progressiv yaxshilanish sifatida qarash kerak. Sayt ularsiz ham mukammal ishlashi kerak. Siz ularni faqat sintaksisni tushunadigan brauzerlarda qo'llash uchun @supports qoidasidan foydalanishingiz mumkin:
/* Barcha brauzerlar uchun standart uslublar */
.reveal {
opacity: 1;
transform: translateY(0);
}
/* Animatsiyalarni faqat qo'llab-quvvatlansa qo'llash */
@supports (animation-timeline: view()) {
.reveal {
opacity: 0; /* Animatsiya uchun boshlang'ich holatni o'rnatish */
animation: fade-and-slide-in linear forwards;
animation-timeline: view();
}
}
Samaradorlik Masalalari
Ushbu texnologiyaning eng katta yutug'i bu samaradorlikdir. Biroq, bu foyda faqat to'g'ri xususiyatlarni animatsiyalashtirsangiz to'liq amalga oshiriladi. Eng silliq tajriba uchun, brauzerning kompozitor thread'i tomonidan boshqarilishi mumkin bo'lgan va layout qayta hisoblanishlari yoki qayta chizishlarni keltirib chiqarmaydigan xususiyatlarni animatsiyalashga e'tibor bering.
- Ajoyib tanlovlar:
transform,opacity. - Ehtiyotkorlik bilan foydalaning:
color,background-color. - Iloji bo'lsa, qoching:
width,height,margin,top,left(boshqa elementlarning layout'iga ta'sir qiluvchi xususiyatlar).
Maxsus Imkoniyatlar bo'yicha Eng Yaxshi Amaliyotlar
Animatsiya joziba qo'shadi, lekin u ba'zi foydalanuvchilar, ayniqsa vestibulyar buzilishlari bo'lganlar uchun chalg'ituvchi yoki hatto zararli bo'lishi mumkin. Har doim foydalanuvchining afzalliklarini hurmat qiling.
Animatsiyalaringizni o'chirish yoki yumshatish uchun prefers-reduced-motion media so'rovidan foydalaning.
@media (prefers-reduced-motion: reduce) {
.reveal, .spinning-gear, .title-reassemble span {
animation: none;
opacity: 1; /* Elementlarning standart ravishda ko'rinishini ta'minlash */
transform: none; /* Har qanday transformlarni tiklash */
}
}
Bundan tashqari, animatsiyalar dekorativ ekanligiga va boshqa yo'l bilan mavjud bo'lmagan muhim ma'lumotlarni etkazmasligiga ishonch hosil qiling.
Xulosa
CSS Scroll-Driven Animatsiyalari dinamik veb interfeyslarni qurish usulimizda paradigma o'zgarishini anglatadi. Animatsiya nazoratini JavaScript'dan CSS'ga o'tkazish orqali biz katta samaradorlik afzalliklariga va yanada deklarativ, saqlanishi oson kod bazasiga ega bo'lamiz.
Ularning to'liq salohiyatini ochishning kaliti oqim nazoratini tushunish va o'zlashtirishda yotadi. animation-direction xususiyatini takrorlanish nazoratchisi sifatida emas, balki vaqt jadvali jarayoni va animatsiya jarayoni o'rtasidagi xaritalovchi sifatida qayta tasavvur qilish orqali biz osonlikcha ikki tomonlama nazoratga ega bo'lamiz. Standart normal xatti-harakati eng keng tarqalgan naqshni ta'minlaydi — oldinga aylantirishda oldinga va teskari aylantirishda orqaga animatsiyalash — reverse esa bizga jozibali "bekor qilish" yoki "orqaga qaytarish" effektlarini yaratish kuchini beradi.
Brauzer qo'llab-quvvatlashi o'sishda davom etar ekan, bu texnikalar progressiv yaxshilanishdan zamonaviy frontend dasturchilari uchun asosiy mahoratga aylanadi. Shunday ekan, bugunoq tajriba o'tkazishni boshlang. Aylantirishga asoslangan o'zaro ta'sirlaringizni qayta ko'rib chiqing va murakkab JavaScript'ni bir necha qator nafis, samarali va yo'nalishga sezgir CSS bilan qanday almashtirishingiz mumkinligini ko'ring.