CSS Animasi Generator

Bangun animasi CSS @keyframes secara visual · pilih preset atau sesuaikan durasi, transformasi, dan easing. Salin kode siap produksi.

Preset

Pengaturan

Pratinjau

Kotak

CSS yang dihasilkan

Cara menggunakan

  1. Pilih preset animasi: pilih dari animasi umum, fade, slide, bounce, spin, pulse, shake, dan lainnya.
  2. Sesuaikan durasi dan perilaku: atur durasi, delay, fungsi easing, jumlah iterasi, dan fill mode.
  3. Salin CSS: definisi @keyframes lengkap dan properti shorthand animation siap untuk ditempel ke stylesheet Anda.

Mengapa menggunakan generator animasi CSS?

Animasi CSS menghidupkan antarmuka, menarik perhatian ke elemen utama, memberikan umpan balik visual, dan menciptakan pengalaman pengguna yang halus. Menulis aturan @keyframes secara manual memerlukan pengetahuan sintaks yang benar, nama easing, dan kombinasi properti yang tepat. Generator ini menawarkan preset animasi yang elegan dengan pratinjau langsung dan memungkinkan Anda menyesuaikan setiap parameter, menghasilkan CSS siap produksi tanpa JavaScript atau pustaka animasi.

Fitur

Pertanyaan umum

Apa perbedaan antara animation dan transition di CSS?

Transisi CSS dipicu pada perubahan status (hover, focus, toggle kelas) dan menganimasikan antara dua status. Animasi CSS menggunakan @keyframes untuk menentukan beberapa status dan berjalan secara independen dari interaksi pengguna, mereka dapat berputar, berbalik, dan mulai secara otomatis.

Apa itu animation-fill-mode dan mengapa penting?

animation-fill-mode mengontrol apakah elemen mempertahankan gaya animasi sebelum dimulai (backwards), setelah selesai (forwards), atau keduanya. Tanpa forwards, elemen kembali secara mendadak ke gaya aslinya di akhir animasi.

Apakah animasi CSS performa?

Animasi yang hanya menggunakan transform dan opacity dipercepat oleh GPU dan sangat halus. Hindari menganimasikan properti tata letak seperti width, height, margin, atau top/left, mereka memicu perhitungan ulang layout dan dapat menyebabkan terbengkalai. Tetap dengan transform dan opacity untuk 60 fps.

Apa yang sebenarnya dilakukan animasi CSS

Animasi CSS menginterpolasi satu atau lebih properti CSS antara keyframe yang ditentukan dari waktu ke waktu, menghasilkan gerakan atau perubahan yang terlihat tanpa JavaScript. Modelnya memiliki dua bagian: aturan @keyframes mendefinisikan tampilan animasi pada langkah berbasis persentase (0% hingga 100%), dan properti shorthand animation (atau saudara longhand-nya animation-duration, animation-delay, animation-timing-function, animation-iteration-count, animation-fill-mode) memberi tahu browser bagaimana memutar definisi keyframes itu. Browser menangani semua interpolasi, easing, dan waktu frame dalam C++, biasanya dipercepat GPU untuk perubahan transform dan opacity.

Animasi berbeda dari transisi CSS dalam dua cara. Transisi terpicu ketika status elemen berubah (hover, toggle kelas, event focus) dan menginterpolasi antara persis dua nilai: lama dan baru. Animasi berjalan terlepas dari status, mengikuti jumlah langkah keyframe yang sembarang, dapat berlangsung tanpa batas, dapat diputar terbalik, dan dapat dipicu, dijeda, dan dilanjutkan melalui CSS atau JavaScript. Transisi adalah alat yang tepat untuk "snap dari A ke B dalam setengah detik"; animasi adalah alat yang tepat untuk "loop pulsa yang menarik perhatian ini selamanya" atau "putar urutan entri ini sekali ketika elemen muncul."

Untuk desain web modern, animasi CSS menggantikan banyak hal yang dulunya memerlukan pustaka JavaScript. Spinner, fade-in, slide-up, pulsa perhatian, tanda centang sukses: semua sekarang adalah pola CSS standar. Trade-off-nya adalah ekspresivitas untuk urutan kompleks. Animasi CSS dapat melakukan banyak hal tetapi berhenti nyaman sekitar 5 hingga 7 langkah keyframe dengan perubahan properti yang disinkronisasi; untuk animasi storyboarded, urutan yang terhubung scroll, atau apa pun yang dinamis yang bergantung pada status JavaScript, pustaka khusus (GSAP, Framer Motion, Web Animations API) tetap menjadi pilihan yang lebih baik.

Cara kerja alat ini di balik layar

Ketika Anda memilih preset (misal "bounce" atau "fade-in") alat memuat string @keyframes yang telah ditentukan ke area pratinjau dan menerapkan properti animation ke kotak pratinjau. Keyframes adalah CSS nyata, bukan format kustom: apa yang Anda lihat adalah apa yang Anda dapatkan untuk disalin. Slider memperbarui nilai timing animasi (duration, delay, iteration count) dengan mengedit properti animation inline secara real time, sehingga pratinjau mencerminkan setiap perubahan secara instan tanpa memuat ulang halaman.

Pemilihan fungsi easing menggunakan nilai timing-function CSS standar: linear (kecepatan konstan), ease (default, awal dan akhir lambat), ease-in (awal lambat), ease-out (akhir lambat), ease-in-out (awal dan akhir lambat), atau cubic-bezier(x1, y1, x2, y2) untuk kurva kustom. Kurva animasi yang terlihat dihitung oleh implementasi timing-function asli browser; pratinjau adalah output yang dirender browser sebenarnya, bukan simulasi JavaScript.

Kotak kode menunjukkan CSS lengkap yang Anda perlukan untuk dimasukkan ke dalam stylesheet: baik blok @keyframes maupun deklarasi .your-class { animation: ... }. Klik "Copy CSS" dan keduanya ditulis ke clipboard Anda sebagai satu blok teks tunggal. Tidak ada file yang dihasilkan, tidak ada server yang memproses apa pun, dan alat tidak memiliki backend untuk dipanggil. Pratinjau, generasi kode, dan penulisan clipboard semuanya terjadi di JavaScript pada perangkat Anda. Refresh halaman dan konfigurasi kustom Anda hilang kecuali Anda menyalinnya terlebih dahulu.

Sejarah singkat animasi web

Alur kerja dunia nyata

Jebakan umum dan apa artinya

Privasi: semuanya berjalan di browser Anda

Alat generator CSS hadir dalam dua varietas: halaman HTML sederhana yang menjalankan JavaScript sisi klien (pribadi, cepat) dan editor cloud yang menyimpan proyek Anda (kolaboratif tetapi dengan trade-off privasi). Alat ini adalah jenis pertama. Nilai slider Anda, preset yang Anda pilih, CSS yang dihasilkan: semua tetap dalam sesi browser Anda. Refresh halaman dan statusnya hilang kecuali Anda menyalin CSS terlebih dahulu. Tidak ada server yang menyimpan pilihan animasi Anda, tidak ada analitik yang melacak preset mana yang Anda uji, dan tidak ada akun yang diperlukan.

Properti privasi paling penting untuk pekerjaan desain proprietary. Studio yang membuat prototipe animasi untuk proyek klien rahasia, pengembang yang bekerja pada mikro-interaksi aplikasi yang belum diumumkan, atau desainer yang melakukan iterasi pada kampanye merek: setiap konteks di mana riwayat iterasi atau desain yang sedang berlangsung dapat membocorkan informasi tentang pekerjaan. Dengan alat ini, tidak ada yang ditangkap karena tidak ada yang dikirim. Buka tab Jaringan browser dan Anda akan melihat nol permintaan keluar selama penggunaan; hanya pemuatan halaman awal yang mengambil HTML dan JavaScript.

Ketika alat lain adalah pilihan yang tepat

Pertanyaan lain yang sering diajukan

Bagaimana cara membuat animasi diputar hanya sekali?

Setel animation-iteration-count: 1 (yang merupakan default jika tidak ditentukan). Untuk membuat elemen tetap dalam keadaan akhir animasi setelah selesai (alih-alih kembali ke gaya asli), atur juga animation-fill-mode: forwards. Shorthand gabungan adalah animation: fadeIn 0.5s ease-out forwards;.

Bisakah saya menjeda dan melanjutkan animasi?

Ya, dengan animation-play-state: paused (atau running). Toggle properti ini melalui JavaScript (mis., pada klik tombol) atau di CSS melalui :hover untuk pola "jeda saat hover". Animasi membeku pada titik saat ini dan dilanjutkan dari sana ketika diatur kembali ke running, tidak ada kemajuan yang hilang. Ini bekerja sama dalam transisi tetapi hanya properti animation-play-state yang ada untuk kontrol jeda runtime.

Bagaimana cara memicu animasi saat klik atau scroll?

Untuk pemicu klik, toggle kelas CSS melalui JavaScript: element.classList.toggle('animate-in'). Animasi berjalan ketika kelas ditambahkan. Untuk pemicu scroll, gunakan IntersectionObserver untuk mendeteksi ketika elemen memasuki viewport dan tambahkan kelas saat itu. Untuk browser modern, Animasi yang Didorong Scroll CSS memungkinkan Anda mengikat kemajuan animasi langsung ke posisi scroll tanpa JavaScript melalui animation-timeline: scroll().

Mengapa animasi saya berkedip atau gagap?

Sebagian besar masalah berkedip/gagap datang dari menganimasikan properti yang memicu layout (width, height, top/left) alih-alih ekivalen berbasis transform. Beralih left: 0 ke transform: translateX(0) dan animasi harus halus. Penyebab lain: overdraw dari banyak lapisan semi-transparan, layout thrashing dari JavaScript yang membaca dan menulis gaya dalam frame yang sama, atau bayangan dan filter berlebihan pada elemen yang dianimasikan.

Haruskah saya menggunakan animasi pada antarmuka yang penting untuk aksesibilitas?

Gunakan mereka, tetapi hormati prefers-reduced-motion. Pedoman WCAG 2.1 merekomendasikan menyediakan opsi untuk menonaktifkan gerakan non-esensial. Bungkus animasi dekoratif dalam @media (prefers-reduced-motion: no-preference) sehingga pengguna yang mengatur preferensi OS mendapatkan pengalaman statis. Animasi umpan balik penting (indikator pemuatan, goyangan kesalahan) dapat dipertahankan; yang murni dekoratif harus opt-in untuk pengguna sensitif.

Bisakah saya menggunakan cubic-bezier untuk kurva easing kustom?

Ya. Fungsi timing cubic-bezier(x1, y1, x2, y2) memungkinkan Anda mendefinisikan kurva easing apa pun dengan dua titik kontrol. Setiap nilai x antara 0 dan 1 (mewakili waktu), nilai y bisa negatif atau lebih besar dari 1 (memungkinkan efek overshoot dan bounce). Gunakan alat Cubic Bezier kami atau cubic-bezier.com klasik Lea Verou untuk memilih kurva secara visual. Alternatif preset umum: ease, ease-in, ease-out, ease-in-out, dan variabel CSS linear-aliased cubic-bezier(0.25, 0.1, 0.25, 1) (ease default).

Alat terkait

Generator Gradient CSS Generator Cubic Bezier CSS Generator Loader / Spinner CSS Generator Flexbox CSS