Gambar nyoe: droeneuh neugabong ngon saboh proyek baro, neu plueng lam codebase, dan lam padum-padum boh jeum awai, droeneuh neuteumeung sapeue-sapeue nyang ka akrab. Meuceu-ceu bak stylesheet, droeneuh neuteumeung le definisi @keyframes keu animasi dasar nyang saban. Lhee boh efek fade-in nyang beda, dua atawa lhee boh variasi slide, padum-padum boh animasi zoom, dan setidak jih dua boh animasi spin nyang beda sabab, well, pakon hana? @bingkai kunci pulsa { nibak { skala: 1; } keu { skala: 1,1; } }
@bingkai kunci leubeh rayeuk-pulsa { 0%, 20%, 100% { skala: 1; } 10%, 40% { skala: 1,2; } }
Meunyo skenario nyoe bunyi jih ka akrab, droeneuh hana sidroe. Lam pengalaman lon di berbagai proyek, salah saboh kemenangan bagah yang paleng konsisten yang jeut lon peusampoe adalah konsolidasi dan standarisasi keyframe. Nyoe jeut keu pola yang jeut diandalkan sehingga lon jinoe lon harapkan peugleh nyoe seubagoe salah saboh tugas phon lon bak codebase baroe. Logika Di Likot Kekacauan Nyan . Redundansi nyoe tamong lam akai meunyo ta pike. Geutanyoe mandum tangui animasi dasar nyang saban lam buet siuroe-uroe: pudar, geser, zoom, putaran, ngon efek umum laen jih. Animasi-animasi nyoe cukop mudah, dan mudah that untuk ta cambuk definisi @keyframes nyang bagah untuk tapeugot buet. Meunyo hana sistem animasi nyang terpusat, pengembang secara alami geutuleh keyframe nyoe dari nol, hana geusadari bahwa animasi nyang saban ka na di teumpat laen lam codebase. Nyoe that umum watee beukerija lam arsitektur berbasis komponen (nyang sebagian rayeuk geutanyoe peuget uroe-uroe nyoe), kareuna tim seureng beukerija seucara paralel di bagian-bagian aplikasi nyang berbeda. Hase jih? Animasi kacau balau. Masalah Ubit Masalah nyang paleng jeulaih ngon duplikasi keyframe nakeuh watee pengembangan nyang sia-sia ngon bloat kode nyang hana peureulee. Definisi keyframe nyang le meuarti le teumpat keu geupeubaroe watee syarat meu ubah. Perlee neu adjust timing animasi fade droeneuh? Droeneuh peureulee neuburu tiep-tiep contoh di codebase droeneuh. Neuk standarisasi fungsi pemudah? Seulamat meurumpok mandum variasi. Perkalian titik pemeliharaan nyoe jeut keu bahkan pembaroan animasi sederhana jeut keu tugas nyang pajoh watee. Masalah nyang leubeh rayeuk Duplikasi keyframes nyoe menciptakan masalah nyang jioh leubeh licik nyang meusom di miyup permukaan: jeubak ruang lingkup global. Bahkan watee keurija ngon arsitektur berbasis komponen, keyframe CSS sabe geudefinisikan lam lingkup global. Nyoe berarti mandum keyframe berlaku keu mandum komponen. Sabe. Ya, animasi droeneuh hana teunte neupakek keyframe nyang ka neudefinisikan lam komponen droeneuh. Nyoe geupakek keyframe akhe nyang cocok ngon nan nyang persis saban nyang ka geumuat lam lingkup global. Seulama mandum keyframe droeneuh identik, nyoe mungken deuh lagee masalah ubeut. Teuma bak saat droeneuh neuk neusesuaikan saboh animasi keu kasus penggunaan tertentu, droeneuh na lam masalah, atawa leubeh brok lom, droeneuh akan jeut keu ureung nyang peugot awaknyan. Boh animasi droeneuh hana akan berhasil kareuna komponen laen nyang dimuat lheuh droeneuh, meutuleh timpa keyframe droeneuh, atawa komponen droeneuh dimuat terakhir dan hana sengaja geuubah perilaku animasi keu tiep komponen laen nyang geupake nan keyframe nyan, dan droeneuh mungken hana neusadari. Nyoe keuh saboh contoh sederhana nyang menunjukkan masalah: .komponen-saboh { . /* gaya komponen */ animasi: pulsa 1s mudah-mu-teubiet alternatif hana bataih; }
/* definisi @keyframes nyoe hana akan berhasil */ @bingkai kunci pulsa { nibak { skala: 1; } keu { skala: 1,1; } }
/* dudoe lam kode... */
.komponen-dua { . /* gaya komponen */ animasi: pulsa 1s mudah-mudah-teubiet hana bataih; }
/* keyframe nyoe akan berlaku keu dua komponen */ @bingkai kunci pulsa { 0%, 20%, 100% { skala: 1; } 10%, 40% { skala: 1,2; } }
Keudua komponen nyan geungui nan animasi nyang saban, tapi definisi @keyframes keudua geutimpa nyang phon. Jinoe komponen-sa dan komponen-dua akan geupake keyframe keudua, hana peureulee komponen pat nyang geudefinisikan keyframe pat. Neu kalon Token Bingkai Kunci Pen - Demo 1 [digarpu] le Amit Sheen. Bagian nyang paleng brok? Nyoe kayem that beukeureuja deungon sempurna lam pembangunan lokal tapi putoh secara misterius lam produksi watee proses bangunan meuubah urutan pemuatan stylesheets droeneuh. Kamoe meuakhé ngon animasi nyang meulaku meulaén-laén meugantung bak komponen pat nyang geumuat ngon lam urutan peuë. Solusi jih: Keyframe Terpadu . Jawaban keu karu nyoe that sederhana: keyframe dinamis nyang ka jiteuntèe awai nyang jikeubah lam stylesheet nyang jibagi. Daripada tapeubiyeu tiep-tiep komponen jidefinisikan animasi droe, tanyoe tapeugot keyframe terpusat nyang terdokumentasi deungon get, mudah untukgeungui, jeuet geupeutheun, ngon geuseusuaikan ngon keubutuhan khusus proyek droeneuh. Pike keu token keyframe. Lagee tanyoe ta pakek token keu warna dan jarak, dan le dari tanyoe ka ta pakek token keu properti animasi, lagee durasi dan fungsi easing, pakon hana ta pakek token keu keyframe cit? Pendekatan nyoe jeut mengintegrasikan secara alami ngon alur kerja token desain saat nyoe nyang droeneuh pakek, sambil menyelesaikan masalah ubeut (duplikasi kode) dan masalah nyang leubeh rayeuk (konflik ruang lingkup global) lam saboh watee. Pikeran jih lurus: peugot saboh sumber kebenaran keu mandum animasi umum geutanyoe. Stylesheet nyang geubagi nyoe meuasoe keyframe nyang geupeugot deungon get nyang mencakup pola animasi nyang beutoi-beutoi geupakeek le proyek kamoe. Hana le neukira-kira peu animasi fade ka na dipat-pat lam codebase geutanyoe. Hana le hana sengaja meutuleh animasi dari komponen laen. Teuma nyoe keuh kunci jih: nyoe kon animasi copy-paste statis mantong. Awak nyan dirancang keu dinamis dan jeuet disesuaikan lewat properti khusus CSS, memungkenkan geutanyoe untuk tapeutheun konsistensi seureuta mantong na fleksibilitas untuk ta adaptasi animasi keu kasus penggunaan tertentu, lagee meunyo droeneuh peureulee animasi “pulsa” nyang leubeh rayeuk bacut bak saboh teumpat. Meubangun Token Keyframes Phon . Salah saboh boh gantung rendah phon nyang haroih tanyoe tanggong nakeuh animasi “fade-in”. Dalam salah saboh proyek baro-baro nyo lon, lon meutumeng lubeh dari silusen definisi fade-in teupisah, ngen ya, awak nyan mandum hanya menganimasikan opacity dari 0 sampoe 1. Jadi, mari tapeugot saboh stylesheet baro, tapeugah kf-tokens.css, ta import lam proyek geutanyoe, dan tapeuduek keyframe geutanyoe ngon komentar nyang paih lam nyan. /* token-bingkai kunci.css */
/* * Pudar Lam - animasi pinto tamong pudar . * Peuguna: animasi: kf-pudar-lam 0,3s mudah-teubiet; */ @bingkai kunci kf-memudar-dalam { nibak { buram: 0; } keu { keu- buram: 1; } }
Deklarasi @keyframes tunggal nyoe geugantoe mandum animasi fade-in nyang meuceu-ceu di seluroh codebase geutanyoe. Gleh, sederhana, dan berlaku secara global. Dan jinoe ka ta define token nyoe, tanyoe jeut ta pakek dari komponen peu mantong sepanjang proyek tanyoe: .modal { animasi: kf-pudar-lam 0,3s mudah-teubiet; }
.tip alat { animasi: kf-pudar-lam 0,2s mudah-lam-teubiet; }
.peunyata { animasi: kf-pudar-lam 0,5s mudah-mudah; }
Neu kalon Token Bingkai Kunci Pen - Demo 2 [digarpu] le Amit Sheen. Catatan: Kamoe meungui awai kf- lam mandum nan @keyframes kamoe. Awalan nyoe berfungsi seubagoe ruang nan nyang mencegah konflik nan ngon animasi nyang na lam proyek dan geupeujeulaih langsong bahwa keyframe nyoe berasal dari file token keyframe geutanyoe. Peugot Slide Dinamis . Keyframe kf-fade-in nyan that get sabab sederhana dan hana le teumpat keu kacau-kacau. Namun, lam animasi laen, geutanyoe peureulee leubeh dinamis, dan di sinoe geutanyoe jeut ta manfaatkan kekuatan nyang that rayeuk dari properti adat CSS. This is where keyframes tokens really shine compared to scattered static animations. Let’s take a common scenario: “slide-in” animations. Tapi geser lam dari pat? 100px dari uneun? 50% dari blah wie? Patot tamong dari ateuh layar? Atawa mungken meuapong lam dari miyueb? Meunan le kemungkenan, tapi alih-alih tapeugot keyframe nyang teupisah keu tiep-tiep arah dan tiep-tiep variasi, tanyoe jeut tapeugot saboh token fleksibel nyang menyesuaikan droe ngon mandum skenario: /* * Geser Lam - animasi geser arah . * Pakèk --kf-geser-dari keu neukontrol arah . * Lalai: geser lam dari wie (-100%) * Peuguna: * animasi: kf-geser-lam 0,3s mudah-teubiet; * --kf-geser-dari: -100px 0; // geser dari wie . * --kf-geser-dari: 100px 0; // geser dari uneun . * --kf-geser-dari: 0 -50px; // geser dari ateuh . */
@bingkai kunci kf-geser-dalam { nibak { neuterjeumah: var (--kf-geser-dari, -100% 0); } keu { neuterjeumah: 0 0; } }
Jinoe jeuet tangui token @keyframes tunggal nyoe keu arah geser peu mantong deungon cara ta ubah properti khusus --kf-slide-from: .blah samping { animasi: kf-geser-lam 0,3s mudah-teubiet; /* Meungui nilai default: geser dari wie */ }
.peunyata { animasi: kf-geser-lam 0,4s mudah-teubiet; --kf-geser-dari: 0 -50px; /* geser dari ateuh */ }
.modal { animasi: kf-pudar-lam 0,5s, kf-geser-lam 0,5s kubik-bezier (0,34, 1,56, 0,64, 1); --kf-geser-dari: 50px 50px; /* geser dari miyueb-uneun */ }
This approach gives us incredible flexibility while maintaining consistency. One keyframe declaration, infinite possibilities. See the Pen Keyframes Tokens - Demo 3 [forked] by Amit Sheen. And if we want to make our animations even more flexible, allowing for “slide-out” effects as well, we cansimply add a --kf-slide-to custom property, similar to what we’ll see in the next section. Bingkai Kunci Zoom Dua Arah Another common animation that gets duplicated across projects is “zoom” effects. Peu keuh nyan skala-up halus keu pesan roti bakar, zoom-in dramatis keu modal, atawa efek skala-down lembut keu heading, animasi zoom na dipat-pat mantong. Instead of creating separate keyframes for each scale value, let’s build one flexible set of kf-zoom keyframes:
/* * Zoom - animasi skala . * Use --kf-zoom-from and --kf-zoom-to to control scale values * Lalai: zoom dari 80% sampoe 100% (0,8 sampoe 1) * Peuguna: * animasi: kf-zoom 0,2s mudah-mudah; * --kf-peu-ék-dari: 0,5; --kf-peu-ék-keu: 1; // zoom dari 50% keu 100% . * --kf-peu-ék-dari: 1; --kf-peu-ék-keu: 0; // zoom dari 100% keu 0% . * --kf-peu-ék-dari: 1; --kf-peu-ék-keu: 1,1; // zoom dari 100% keu 110% . */
@bingkai kunci kf-peu-ék { nibak { skala: var (--kf-peu-ék-dari, 0,8); } keu { skala: var (--kf-peu-ék-keu, 1); } }
Deungon saboh definisi, geutanyoe jeuet ta capai variasi zoom peu mantong nyang geutanyoe peureulee: .roti bakar { animasi: kf-geser-lam 0,2s, kf-zoom 0,4s mudah-mudah; --kf-geser-dari: 0 100%; /* geser dari ateuh */ /* Meungui zoom lalai: skala dari 80% sampoe 100% */ }
.modal { animasi: kf-zoom 0,3s kubik-bezier (0,34, 1,56, 0,64, 1); --kf-peu-ék-dari: 0; /* zoom dramatis dari 0% keu 100% */ }
.judul { animasi: kf-pudar-dalam 2s, kf-zoom 2s mudah-mudahan; --kf-peu-ék-dari: 1,2; --kf-peu-ék-keu: 0,8; /* skala lembut u miyueb */ }
Default 0,8 (80%) meubut deungon sempurna keu sebagian rayeuk elemen UI, lagee peusan roti bakar ngon kartu, seudangkan mantong mudah disesuaikan keu kasus-kasus khusus. Neu kalon Token Bingkai Kunci Pen - Demo 4 [digarpu] le Amit Sheen. You might have noticed something interesting in the recent examples: we've been combining animations. One of the key advantages of working with @keyframes tokens is that they’re designed to integrate seamlessly with each other. This smooth composition is intentional, not accidental. Tanyoe akan ta bahas komposisi animasi leubeh rinci ukeu, termasuk dipat awak nyan jeut keu masalah, tapi sebagian rayeuk kombinasi nyan lurus dan mudah dipeulaku. Note: While writing this article, and maybe because of writing it, I found myself rethinking the whole idea of entrance animations. With all the recent advances in CSS, do we still need them at all? Naseb, Adam Argyle geujak jeulajah pertanyaan-pertanyaan nyang saban dan geupeugah deungon brilian lam blog gobnyan. Nyoe hana meulawan ngon peu nyang ka teutuleh di sinoe, tapi nyoe menyajikan saboh pendekatan nyang layak dipeutimang, terutama meunyo proyek-proyek droeneuh that meugantung bak animasi tamong. Animasi nyang sabe-sabe Sementara animasi tamong, lagee “fade”, “slide”, dan “zoom” terjadi sigo dan lheuh nyan berhenti, animasi sabe-sabe loop hana bataih watee untuk menarik perhatian atawa menunjukkan kegiatan yang teungoh meulanggeh. Dua animasi sabe-sabe nyang paleng umum lon teume nakeuh “spin” (untuk indikator pemuatan) dan “pulse” (untuk menyorot elemen-elemen peunteng). These animations present unique challenges when it comes to creating keyframes tokens. Hana lagee animasi tamong nyang biasa jih jijak dari saboh nanggroe bagian u nanggroe bagian laen, animasi nyang sabe-sabe peureulee that jeuet disesuaikan lam pola perilaku jih. Dokter Spin nyan Every project seems to use multiple spin animations. Na nyang meuputa seuara jeum, na nyang meulawan arah jeum. Some do a single 360-degree rotation, others do multiple turns for a faster effect. Instead of creating separate keyframes for each variation, let’s build one flexible spin that handles all scenarios:
/* * Animasi putaran - rotasi . * Use --kf-spin-from and --kf-spin-to to control rotation range * Pakèk --kf-spin-putar keu neukontrol jumlah rotasi . * Default: rotates from 0deg to 360deg (1 full rotation) * Peuguna: * animasi: kf-spin 1s linier hana bataih; * --kf-meuputa-puta: 2; // 2 rotasi peunoh . * --kf-meuputa-dari: 0derajat; --kf-meuputa-keu: 180derajat; // rotasi seuteungeh * --kf-meuputa-dari: 0derajat; --kf-meuputa-keu: -360derajat; // meulawan ngon arah jeum */
@bingkai kunci kf-putar { nibak { putar: var (--kf-meuputa-dari, 0derajat); } keu { putar: hitung (var (--kf-meuputa-dari, 0derajat) + var (--kf-meuputa-keu, 360derajat) * var (--kf-meuputa-putar, 1)); } }
Jinoe jeut ta peugot variasi spin peu mantong nyang tanyoe galak:
.peumuatan-peumutar { . animasi: kf-spin 1s linier hana bataih; /* Meungui default: meuputa dari 0deg sampoe 360deg */ }
.peumuat bagah { animation: kf-spin 1.2s ease-in-out infinite alternate; --kf-meuputa-puta: 3; /* 3 rotasi peunoh keu tiep arah per siklus .*/ }
.meulangkah-meubalek { animasi: kf-spin 1,5s langkah(8) hana bataih; --kf-meuputa-keu: -360derajat; /* meulawan arah jeum */ }
.haluih-meugoyang { . animasi: kf-spin 2s mudah-mudah-teubiet gantoe hana bataih; --kf-meuputa-dari: -16derajat; --kf-meuputa-keu: 32derajat; /* meugoyang 36 derajat: antara -18derajat ngon +18derajat */ }
Neu kalon Token Bingkai Kunci Pen - Demo 5 [digarpu] le Amit Sheen. The beauty of this approach is that the same keyframes work for loading spinners, rotating icons, wiggle effects, and even complex multi-turn animations. Paradoks Nadi Nadi Animasi pulsa leubeh rumit kareuna jeut “pulsa” sifat-sifat nyang beda. Na nyang pulsa skala, na nyang pulsa opacity, ngon na nyang pulsa sifeut warna lagee terang atawa jenuh. Daripada tapeugot keyframe nyang meupisah keu tiep-tiep properti, tanyoe jeut tapeugot keyframe nyang meubut ngon properti CSS peu mantong. Nyoe keuh contoh keyframe pulsa ngon opsi skala ngon opacity:
/* * Animasi pulsa - pulsa . * Gunakan --kf-pulsa-skala-dari dan --kf-pulsa-skala-keu keu ngontrol rentang skala * Gunakan --kf-pulsa-opasitas-dari dan --kf-pulsa-opasitas-keu keu ngontrol rentang opasitas * Lalai: hana pulsa (mandum nilai 1) * Peuguna: * animasi: kf-pulsa 2s mudah-lam-teubiet alternatif hana bataih; * --kf-denyut-skala-dari: 0,95; --kf-denyut-skala-keu: 1,05; // pulsa skala . * --kf-pulsa-opasitas-dari: 0,7; --kf-pulsa-keu-keu: 1; // pulsa opasitas . */
@bingkai kunci kf-pulsa { nibak { skala: var (--kf-denyut-skala-dari, 1); buram: var (--kf-pulsa-buram-dari, 1); } keu { skala: var (--kf-denyut-skala-keu, 1); buram: var (--kf-pulsa-buram-keu, 1); } }
Nyoe jipeugot pulsa fleksibel nyang jeuet jipeu-animasi le properti: .panggilan-keu-tindak { animasi: kf-pulsa 0,6s hana bataih gantoe; --kf-pulsa-opasitas-dari: 0,5; /* pulsa opasitas */ }
.peunyata-titik { animasi: kf-pulsa 0,6s mudah-tamong-teubiet alternatif hana bataih; --kf-denyut-skala-dari: 0,9; --kf-denyut-skala-keu: 1,1; /* pulsa skala */ }
.teks-sorot { animasi: kf-pulsa 1,5s mudah-mudah hana bataih; --kf-denyut-skala-dari: 0,8; --kf-pulsa-opasitas-dari: 0,2; /* pulsa skala dan opasitas */ }
Neu kalon Token Bingkai Kunci Pen - Demo 6 [digarpu] le Amit Sheen. Keyframe kf-pulse tunggal nyoe jeut geutangani mandum dari perhatian halus sampoe sorotan dramatis, mandum nyan sambil mudah untuk disesuaikan. Peumudah Lanjutan One of the great things about using keyframes tokens is how easy it is to expand our animation library and provide effects that most developers would not bother to write from scratch, like elastic or bounce. Nyoe keuh saboh contoh token keyframes “bounce” sederhana nyang geupake properti khusus --kf-bounce-from untuk geukontrol lambong lompatan. /* * Mantul - animasi pintô tamong meupantul . * Pakèk --kf-mantul-dari keu neukontrol manyang lompatan * Lalai: ji plueng dari 100vh (di luwa layar) * Peuguna: * animasi: kf-mantul 3s mudah-mudah; * --kf-meu-ulang-dari: 200px; // ji plueng dari manyang 200px . */
@bingkai kunci kf-mantul { 0% { neuterjeumah: 0 kalk (var (--kf-mantul-dari, 100vh) * -1); }
34% neuterjeumah: 0 kalk (var (--kf-mantul-dari, 100vh) * -0,4); }
55% neuterjeumah: 0 kalk (var (--kf-mantul-dari, 100vh) * -0,2); }
72% neuterjeumah: 0 kalk (var (--kf-mantul-dari, 100vh) * -0,1); }
85% neuterjeumah: 0 kalk (var (--kf-mantul-dari, 100vh) * -0,05); }
94% neuterjeumah: 0 kalk (var (--kf-mantul-dari, 100vh) * -0,025); }
99% neuterjeumah: 0 kalk (var (--kf-mantul-dari, 100vh) * -0,0125); }
22%, 45%, 64%, 79%, 90%, 97%, 100% { neuterjeumah: 0 0; animasi-waktu-fungsi: mudah-mudah; } }
Animasi lagee “elastic” agak rumit kareuna perhitungan lam keyframe. We need to define --kf-elastic-from-X and --kf-elastic-from-Y separately (both are optional), and together they let us create an elastic entrance from any point on the screen.
/* * Elastis Lam - animasi pinto tamong elastis . * Pakèk --kf-elastis-dari-X ngon --kf-elastis-dari-Y keu ngontrol posisi awai * Lalai: tamong dari pusat ateuh (0, -100vh) * Peuguna: * animasi: kf-elastis-lam 2s mudah-lam-teubiet boh; * --kf-elastis-dari-X: -50px; * --kf-elastis-dari-Y: -200px; // tamong dari (-50px, -200px) */
@bingkai kunci kf-elastis-lam { 0% { 1) kalk (var (--kf-elastis-dari-Y, 0px) * 1); }
16% terjemahkan: kalk (var (--kf-elastis-dari-X, -50vw) * -0,3227) kalk (var (--kf-elastis-dari-Y, 0px) * -0,3227); }
28% terjemahkan: kalk (var (--kf-elastis-dari-X, -50vw) * 0,1312)kalc (var (--kf-elastis-dari-Y, 0px) * 0,1312); }
44% terjemahkan: kalk (var (--kf-elastis-dari-X, -50vw) * -0,0463) kalk (var (--kf-elastis-dari-Y, 0px) * -0,0463); }
59% 0,0164) kalk (var (--kf-elastis-dari-Y, 0px) * 0,0164); }
73% { terjemahkan: kalk (var (--kf-elastis-dari-X, -50vw) * -0,0058) kalk (var (--kf-elastis-dari-Y, 0px) * -0,0058); }
88% { 0,0020) kalk (var (--kf-elastis-dari-Y, 0px) * 0,0020); }
100% neuterjeumah: 0 0; } }
Pendekatan nyoe geupeumudah keu geungui lom ngon geusesuaikan keyframe canggih di seluroh proyek geutanyoe, hanya ngon geuubah saboh properti khusus.
.mantul-dan-peu-zoom { animasi: kf-mantul 3s mudah-dalam, . kf-peu-ék 3s linier; --kf-peu-ék-dari: 0; }
.mantul-dan-geser { . animasi-komposisi: tamah; /* Kedua animasi nyan pakek terjemahan */ animasi: kf-mantul 3s mudah-dalam, . kf-geser-dalam 3s mudah-teubiet; --kf-geser-dari: -200px; }
.elastis-lam { animasi: kf-elastis-lam 2s mudah-lam-teubiet bandua; }
Neu kalon Token Bingkai Kunci Pen - Demo 7 [digarpu] le Amit Sheen. Sampoe bak saat nyoe, kamoe ka meukaloen kiban cara kamoe jeut meukonsolidasikan keyframe deungon cara nyang cerdas dan efisien. Teuntèe, droeneuh mungkén neuk neu-utak-atik hai-hai mangat leubeh jroh ngon keubutuhan proyek droeneuh, tapi kamoe ka kamoe cok contoh padum-padum boh animasi umum dan kasus penggunaan siuroe-uroe. Dan deungon token keyframes nyoe di teumpat, jinoe kamoe na blok bangunan nyang kuat untuk peugot animasi nyang konsisten dan jeut dipeutheun di mandum proyek. Hana le keyframe nyang meuganda, hana le konflik lingkup global. Cuma cara nyang gleh, mangat untuk ta tangani mandum kebutuhan animasi geutanyoe. Teuma peukara njang seubeutôijih nakeuh: Pakriban geutanjoë tapeugot blok-blok bangunan njoë beusaban? Meusapat Mandum Kamoe ka meungieng bahwa meugabongkan token keyframe dasar nyan sederhana. Tanyoe hana peureulee sapeu nyang khusus tapi untuk ta define animasi phon, ta define nyang keudua, ta set variabel lagee nyang dipeureulee, dan nyan keuh. /* Pudar lam + geser lam */ .roti bakar { animasi: kf-pudar-lam 0,4s, kf-geser-lam 0,4s kubik-bezier (0,34, 1,56, 0,64, 1); --kf-geser-dari: 0 40px; }
/* Zoom + pudar */ .modal { animasi: kf-pudar-lam 0,3s, kf-zoom 0,3s kubik-bezier (0,34, 1,56, 0,64, 1); --kf-peu-ék-dari: 0,7; --kf-peu-ék-keu: 1; }
/* Geser lam + pulsa */ .peunyata { animasi: kf-geser-lam 0,5s, kf-pulsa 1,2s mudah-tamong-teubiet alternatif hana bataih; --kf-geser-dari: -100px 0; --kf-denyut-skala-dari: 0,95; --kf-denyut-skala-keu: 1,05; }
Kombinasi-kombinasi nyoe meubut deungon lagak kareuna tiep-tiep animasi jitargetkan properti nyang beda: opacity, transform (translate/scale), dll Teuma kadang na konflik, dan geutanyoe peureulee ta teupeu pakon dan kiban cara tahadapi konflik nyan. Watee dua animasi ji cuba animasi properti nyang saban — miseu jih, bandua animasi skala atawa bandua animasi opacity — hasee jih hana akan lagee nyang droeneuh harapkan. Seubagoe default, saboh mantong animasi nyang seubeutoi jih geubri keu properti nyan, nyang nakeuh nyang akhé lam daftar animasi. Nyoe nakeuh saboh batasan bak cara CSS geutangani le animasi bak properti nyang saban. Miseuëjih, nyoe hana akan meuhasé lagèë nyang geumaksud sabab hanya animasi kf-pulse nyang akan berlaku. .kombo-hana get { animasi: kf-zoom 0,5s keu ukeu, . kf-pulsa 1,2s gantoe hana bataih; --kf-peu-ék-dari: 0,5; --kf-peu-ék-keu: 1,2; --kf-denyut-skala-dari: 0,8; --kf-denyut-skala-keu: 1,1; }
Peunambahan Animasi Cara paleng sederhana ngon paleng langsong keu neutangani le animasi nyang meupeungaroh keu properti nyang saban nakeuh ngon neungui properti animasi-komposisi. Lam contoh akhe di ateuh, animasi kf-pulse geugantoe animasi kf-zoom, jadi tanyoe hana akan takalon zoom awai dan hana akan meurumpok skala nyang diharapkan keu 1,2. Deungon tapeugot animasi-komposisi keu ta tamah, tanyoe tapeugah bak browser beu tapeugabong bandua animasi nyan. Nyoe keuh nyang bri hase nyang tanyoe meuheut. .komponen-dua { . animasi-komposisi: tamah; }
Neu kalon Token Bingkai Kunci Pen - Demo 8 [digarpu] le Amit Sheen. Pendekatan nyoe berfungsi deungon get keu sebagian rayeuk kasus dipat tanyoe ingin menggabungkan efek bak properti yang sama. Meunan cit meuguna watee tanyoe peureulee ta gabungkan animasi ngon nilai properti statis. Miseu jih, meunyo geutanyoe na elemen nyang geupake properti translate untuk geuposisikan jih tepat bak teumpat nyang geutanyoe galak, dan lheuh nyan geutanyoe keuneuk animasikan jih lam ngon keyframes kf-slide-in, geutanyoe meurumpok lompatan nyang deuh nyang brok tanpa animasi-komposisi. Neu kalon Token Bingkai Kunci Pen - Demo 9 [digarpu] le Amit Sheen. Deungon animasi-komposisi nyang ka geuset keu geutamah, animasi nyan lancar geupeugabong ngon nyang ka na .meuubah, sampoe elemen nyan teutap bak teumpat dan meu-animasi lagee nyang geuharapkan. Animasi Meugantung Another way of handling multiple animations is to “stagger” them — that is, start the second animation slightly after the first one finishes. Bukon keuh saboh solusi nyang meuhase keu tiep-tiep kasus, tapi na guna watee tanyoe na animasi tamong nyang di ikot le animasi nyang sabe-sabe. /* pudar lam + pulsa opasitas */ .peunyata { animasi: kf-pudar-dalam 2s mudah-keluar, . kf-pulsa 0,5s 2s mudah-tamong-teubiet alternatif hana bataih; --kf-pulsa-opasitas-keu: 0,5; }
Neu kalon Token Bingkai Kunci Pen - Demo 10 [digarpu] le Amit Sheen. Peukara Peurintah Seubagian rayek animasi nyang tanyoe keureuja pakek properti transform. Lam padum-padum boh kasus, nyoe hanya leubeh mangat. Nyoe pih na keunggulan kinerja kareuna animasi transform jeut dipeucepat le GPU. Teuma meunyo tanyoe tangui transformasi, tanyoe peureulee ta teurimong bahwa urutan tanyoe tapeubuet transformasi tanyoe peunteng. Jai that. Lam keyframe kamoe seulama nyoe, kamoe ka kamoe pakek transformasi individu. Meunurot spek, nyoe sabee geuterapkan lam urutan nyang teutap: phon, elemen nyan meuteumeung translate, lheuh nyan rotate, lheuh nyan scale. Nyoe keuh nyang tamong lam akai dan nakeuh nyang taharap le sebagian rayeuk geutanyoe. Teuma meunyo ta pakek properti transform, urutan fungsi-fungsi nyan dituleh nakeuh urutan fungsi-fungsi nyan diterapkan. In this case, if we move something 100 pixels on the X-axis and then rotate it by 45 degrees, it is not the same as first rotating it by 45 degrees and then moving it 100 pixels. /* Peut sagoe pink: Phon neuterjeumah, lheuh nyan neuputa */ .contoh-saboh { . meuubah: neuterjeumahX (100px) neuputa (45deg); }
/* Peut sagoe ijo: Phon putar, lheuh nyan neuterjeumah */ .contoh-dua { . meuubah: meuputa (45deg) meuterjeumahX (100px); }
Neu kalon Token Bingkai Kunci Pen - Demo 11 [digarpu] le Amit Sheen. But according to the transform order, all individual transforms — everything we’ve used for the keyframes tokens — happens before the transform functions. Nyan beurarti peu mantong nyang droeneuh peugot lam properti transform akan terjadi lheuh animasi-animasi nyan. Teuma meunyo neuset, miseu jih, neuterjeumah beusama ngon keyframes kf-spin, neuterjeumah akan teujadi sigohlom animasi. Bingong lom?! Nyoe meuakibatkan situasi dipat nilai statis jeut menyebabkan hasee nyang beda keu animasi nyang sama, lagee lam kasus berikut:
/* Animasi umum keu dua boh spinner */ .peumutar { animasi: kf-spin 1s linier hana bataih; }
/* Peuputa warna pink: neuterjeumah sigohlom neuputa (ubah sidroe-droe) */ .peumutar-pink { neuterjeumah: 100% 50%; }
/* Spinner ijo: putar lheuh nyan neuterjeumah (urutan fungsi) */ .peumutar-hijo { . meuubah: neuterjeumah(100%, 50%); }
Neu kalon Token Bingkai Kunci Pulpen - Demo 12 [digarpu] le Amit Sheen. You can see that the first spinner (pink) gets a translate that happens before the rotate of kf-spin, so it first moves to its place and then spins. The second spinner (green) gets a translate() function that happens after the individual transform, so the element first spins, then moves relative to its current angle, and we get that wide orbit effect. Hana, nyoe kon bug. Nyan nakeuh salah saboh dari hai-hai nyang peureulee tanyoe teupeu teuntang CSS dan ta ingat watee ta keureuja ngon le animasi atawa le transformasi. Meunyo peureulee, droeneuh jeuet neupeugot cit saboh set tambahan keyframe kf-spin-alt nyang memutar elemen ngon neungui fungsi rotate(). Geurakan nyang ka geupeukureueng Dan watee tanyoe teungoh ta peugah haba teuntang keyframe alternatif, tanyoe hanjeut ta abaikan opsi “hana animasi”. Salah saboh keuntungan nyang paleng rayeuk dari pakek token keyframes nakeuh aksesibilitas jeut dipanggang, dan nyan sebenar jih cukop mudah untuk dipeugot. By designing our keyframes with accessibility in mind, we can ensure that users who prefer reduced motion get a smoother, less distracting experience, without extra work or code duplication. The exact meaning of “Reduced Motion” can change a bit from one animation to another, and from project to project, but here are a few important points to keep in mind: Peubidam bingkai kunci Seudangkan padum-padum boh animasi jeuet geupeuleumoh atawa geupeulambat, na nyang la'én nyang harôih gadôh mandum meunyoë geulakèë gerak nyang geupeukureuëng. Animasi pulsa nakeuh saboh contoh nyang jroh. Untuk tapeu pasti animasi-animasi nyoe hana meujalan lam mode gerak reduced, tanyoe jeut ta bungkus mantong lam query media nyang sesuai.
@media (leubeh galak-meukureueng-gerak: hana-preferensi) { @kuncifrmas kf-pulsa { nibak { skala: var (--kf-denyut-skala-dari, 1); buram: var (--kf-pulsa-buram-dari, 1); } keu { skala: var (--kf-denyut-skala-keu, 1); buram:var (--kf-pulsa-keu-keu, 1); } } }
Nyoe geupeupastikan bahwa ureueng ngui nyang ka geuset prefers-reduced-motion keu reduce hana akan geukaloen animasi dan akan meurumpok pengalaman nyang sesuai ngon preferensi awak nyan. Instan Lam Na padum-padum boh keyframe nyang hana jeuet ta peugadeh mantong, lagee animasi tamong. Nilai nyan wajeb meu ubah, wajeb meu-animasi; meunyo hana, elemen nyan hana akan na nilai-nilai nyang beutoi. Teuma lam gerak nyang meukureng, transisi nyoe dari nilai awai haroih instan. Untuk meucapai hal nyoe, tanyoe akan tadefinisikan saboh set ekstra keyframe dimana nilai nyan langsong ji plueng u keadaan akhe. Nyoe jeut keu keyframe default geutanyoe. Teuma, kamoe akan meutamah bingkai kunci biasa lam kueri media keu prefer-reduksi-gerak nyang ditetapkan keu hana-preferensi, saban lagee contoh seugolom jih. /* pop in seketika untuk gerak yang dipeukureng */ @bingkai kunci kf-peu-ék { nibak, keu { . skala: var (--kf-peu-ék-keu, 1); } }
@media (leubeh galak-meukureueng-gerak: hana-preferensi) { /* Bingkai kunci zoom asli */ @bingkai kunci kf-peu-ék { nibak { skala: var (--kf-peu-ék-dari, 0,8); } keu { skala: var (--kf-peu-ék-keu, 1); } } }
Deungon cara nyoe, ureueng ngui nyang leubeh galak gerak nyang meukureng akan geukaloen elemen nyan deuh sigra lam keuadaan akhe, seudangkan mandum ureueng laen meurumpok transisi animasi. Pendekatan Leumoh . Na kasus-kasus dipat geutanyoe memang keuneuk jaga padum-padum boh gerak, tapi jioh leubeh lembut dan tenang dari animasi asli. Miseuëjih, jeuët ta gantoë saboh pintô tamong nyang meu-ulang-ulang deungon saboh fade-in nyang lembut.
@bingkai kunci kf-mantul { /* Fade-in lembut untuk gerak yang dipeukureng */ }
@media (leubeh galak-meukureueng-gerak: hana-preferensi) { @bingkai kunci kf-mantul { /* Bingkai kunci mantul asli */ } }
Jinoe, ureueng ngui ngon gerak nyang ka geupeukureueng mantong meuteumee rasa rupa, tapi hana gerak nyang intens lagee animasi mantul atawa elastis. Deungon blok bangunan nyang na, pertanyaan selanjut jih nakeuh pakriban cara tapeugot awaknyan jeut keu bagian dari alur kerja nyang sebenar jih. Meutuleh keyframe fleksibel nakeuh saboh hai, tapi peugot jih jeut diandalkan di seluroh proyek rayeuk perle padum-padum boh strategi nyang harus lon meurunoe cara nyang brat. Strategi Pelaksanaan & Praktek Terbaik . Meunyo ka tanyoe na perpustakaan token keyframes nyang solid, tantangan nyang seubeutoi jih nakeuh kiban cara ta ba awaknyan lam buet siuroe-uroe.
Godaan nakeuh untuk drop mandum keyframe lam sigo dan menyatakan masalah ka seuleusoe, tapi lam praktek lon ka meuteume bahwa hasee nyang paleng get teuka dari adopsi bertahap. Mulai ngon animasi nyang paleng umum, lagee fade atawa slide. Nyoe nakeuh meunang mudah nyang jipeuleumah nilai langsong hana peureulee tuleh ulang nyang rayeuk. Peunan nakeuh saboh teuk nyang patot tabri perhatian. Saboh awai atawa ruang nan nyang konsisten geupeujeulaih animasi pat nyang jeuet keu token ngon pat nyang jeuet keu one-off lokal. Nyoe pih mencegah tabrakan hana disengaja dan membantu anggota tim baroe geuturi sistem bersama lam saboh pandangan. Dokumentasi pih saban peunteng jih ngon kode nyan keudroe. Bahkan komentar paneuk di ateuh tiep-tiep token keyframes jeut jimat jam-jam teubak eunteuk. Sidroe pengembang haroih jeuet geubuka file token, geu-scan keu efek nyang awaknyan peureulee, ngon geusalen pola penggunaan langsong u dalam komponen awaknyan. Fleksibilitas nakeuh nyang peugot pendekatan nyoe layak untuk diusahakan. Deungon tapeuhah properti adat nyang masuk akal, kamoe meubri ruang keu tim-tim untuk meuadaptasi animasi tanpa meupeubreuk sistem. Bak watee nyan cit, cuba bek le that rumit. Seudiakan tombol-tombol nyang peunteng dan jaga sisa jih berpendapat. Nyang akhe, ingat keu aksesibilitas. Hana mandum animasi peureulèë alternatif gerak nyang geupeukureuëng, tapi le nyang peureulèë. Baking lam penyesuaian nyoe awai berarti geutanyoe hana pernah harus retrofit awaknyan eunteuk, dan nyan menunjukkan tingkat perawatan yang akan diperhatikan pengguna geutanyoe bah pih awaknyan hana pernah menyebutkannya.
Lam pengalaman lon, memperlakukan token keyframes seubagoe bagian dari alur kerja token desain geutanyoe nakeuh nyang peugot awaknyan meuleukat. Meunyo ka na bak teumpat jih, awak nyan hana le meurasa lagee efek khusus ngon jeut keu bagian dari bahasa desain, peuluah alami dari kiban produk nyan meugrak ngon merespon. Meubungkôh Animasi jeut keu salah saboh bagian nyang paleng geumbira lam membangun antarmuka, tapi meunyo hana struktur, awak nyan pih jeut keu salah saboh sumber frustrasi nyang paleng rayeuk. Deungon tapeulaku keyframe seubagoe token, droeneuh neucok sapeue-sapeue nyang biasa jih karu dan payah keulola dan neuubah jeuet keu sistem nyang jeulaih dan jeuet neuprediksi. Nilai nyang seubeutoi jih kon cuma lam simpan padum-padum boh bareh kode. Meunan keuh lam keyakinan bahwa watee droeneuh neupakek fade, slide, zoom, atawa spin, droeneuh neuteupeu persis kiban cara jih akan berperilaku di seluroh proyek. Meunan keuh lam fleksibilitas nyang teuka dari sifeut-sifeut adat hana karu variasi nyang hana akhe. Dan nyan lam aksesibilitas nyang dibangun lam yayasan nibak ditambahkan seubagoe .saboh pikeran lheuh. Lon ka lon kalon ide-ide nyoe beukerija lam tim nyang beda dan codebase nyang beda, dan pola jih sabee saban. Meunyo token-token nyan ka na bak teumpat jih, keyframe hana le jeut keu kumpulan trik nyang meuceu-ceu dan jeut keu bagian dari bahasa desain. Awak nyan geupeugot produk nyan meurasa leubeh geusengaja, leubeh konsisten, ngon leubeh udep. Meunyo neucok saboh hai nibak tulesan nyoe, bah kheueh lagee nyoe: animasi pantas meurumpok perawatan ngon struktur nyang saban nyang ka kamoe bri keu warna, tipografi, ngon jarak. Investasi ubeut lam token keyframes meuhase tiep-tiep watee antarmuka droeneuh meugrak.