CSS Animations — CSS

Transitions cuma bisa A → B (warna biru jadi hitam, posisi 0 jadi 100). Tapi pas kamu pengen elemen geleng-geleng kepala kayak nolak…

Transition cuma bisa dari keadaan A ke B, dan butuh pemicu kayak hover. Animation bisa jalan sendiri, punya banyak tahap, dan bisa diulang terus, misalnya kotak yang naik-turun tanpa henti. Caranya dua langkah: tulis tahap-tahap gerakannya di @keyframes, lalu pasang ke elemen dengan properti animation.

🧪 Tebakan cepat: animasi yang diputar sekali sudah selesai. Kotaknya diam di posisi terakhir, atau balik ke posisi awal? Tebak dulu, jawabannya ada di bagian "Sesudah animasinya selesai".

Tulis tahapnya, lalu pasang

@keyframes bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-40px); }
}

.box {
  animation: bounce 1s infinite;
}

Hasilnya, kotaknya naik lalu turun lagi setiap detik, terus-menerus. Gerakan di antara tahap-tahapnya diisi sendiri oleh browser.

from dan to buat dua tahap

@keyframes muncul {
  from { opacity: 0; }
  to { opacity: 1; }
}

from sama dengan 0%, to sama dengan 100%. opacity mengatur seberapa kelihatan elemen: 1 kelihatan penuh, 0 hilang. Jadi animasi muncul membuat elemen pelan-pelan tampak.

Properti animation satu per satu

animation: geser 2s infinite adalah singkatan dari:

.kotak {
  animation-name: geser;
  animation-duration: 2s;
  animation-iteration-count: infinite;
}

Sesudah animasinya selesai

Begitu animasi yang gak diulang terus selesai, gaya dari @keyframes dilepas dan elemennya kembali ke gayanya sendiri, jadi kelihatan loncat ke posisi awal. Itu jawaban tebakannya. Tambahkan animation-fill-mode: forwards biar elemennya diam di tahap terakhir.

⚠️ Jebakan yang sering ketemu

🎯 Transition atau animation?

🔬 Coba sendiri

Pilih keyframes, durasi dan jumlah putarannya, lalu lihat kotaknya bergerak.

TL;DR: @keyframes nama { ... } menulis tahap-tahap gerakan (from/to atau persen), lalu animation memasangnya ke elemen. Tiga yang paling penting: animation-name (sama persis dengan nama keyframes), animation-duration (dengan s), dan animation-iteration-count (angka atau infinite). Singkatannya animation: geser 2s infinite. Sesudah selesai, elemen balik ke gayanya sendiri, kecuali diberi animation-fill-mode: forwards.

Yang akan kamu pelajari