
Lo pernah nggak sih ngerasa tampilan website lo itu... flat banget? Kayak hidup segan, mati tak mau. Nah, di era sekarang, tampilan UI yang dinamis dan interaktif tuh udah jadi kebutuhan, bukan sekadar bonus. Salah satu cara paling gampang buat bikin tampilan web lo lebih hidup adalah pakai animasi.
Untungnya, kalau lo pakai Tailwind CSS v4, lo nggak perlu repot ngoding animasi dari nol. Tailwind udah nyediain berbagai animasi siap pakai yang tinggal comot. Bahkan, kalau lo ngerasa animasi default-nya kurang nendang, lo bisa bikin custom animasi versi lo sendiri dengan mudah lewat konfigurasi di TailwindCSS.
Di artikel ini, gue bakal ajak lo ngulik bareng soal:
- Animasi bawaan (yang tinggal pakai)
- Cara bikin animasi custom sendiri
- Tips dan best practice biar animasi lo nggak lebay tapi tetap kece
Yuk, kita mulai ngebahas panduan lengkap animasi Tailwind CSS v4, dari yang siap pakai sampai lo bisa bikin animasi versi lo sendiri!
Apa Itu Animasi di Tailwind CSS?
Sebelum lo langsung terjun pakai animasi bawaan atau bikin yang custom, penting banget buat ngerti dulu konsep dasarnya. Soalnya, animasi di Tailwind itu ada dua jenis utama: transition dan animation. Keduanya punya fungsi beda, tapi sering dipakai barengan buat bikin efek yang mulus.
Transition
Transition itu lebih ke perubahan gaya secara halus. Misalnya lo mau bikin tombol berubah warna pas di-hover. Nah, transisi ini ngebuat perubahannya nggak langsung “jepret”, tapi pelan-pelan, lebih enak dilihat.
Contoh simple:
<button class="bg-blue-500 hover:bg-blue-700 transition-colors duration-300">
Klik Gue
</button>
Lihat kan? Di situ kita pakai transition-colors
biar efek hover-nya smooth.
Animation
Kalau animation, ini lebih kompleks. Lo bisa bikin elemen muter (spin
), mantul-mantul (bounce
), muncul perlahan, atau bahkan efek masuk dari samping. Tailwind udah sediain beberapa utility animate-*
yang bisa langsung lo pake.
Contoh:
<div class="animate-bounce w-6 h-6 bg-red-500 rounded-full"></div>
Hasilnya? Si bulat merah bakal mantul-mantul kayak bola pingpong. Seru, kan?
Singkatnya:
- Transition → buat efek perubahan gaya (warna, ukuran, opacity, dll).
- Animation → buat efek gerak yang lebih kompleks dan bisa diatur pakai
@keyframes
.
Jadi sekarang lo udah ngerti, kan, perbedaan dasar antara dua jenis animasi di Tailwind CSS? Yuk, lanjut ke bagian yang paling ditunggu: animasi keren siap pakai yang langsung bisa lo comot!
Animasi Siap Pakai di Tailwind CSS v4
Tailwind CSS v4 hadir bawa beberapa animasi built-in yang bisa langsung lo pake tanpa harus nulis @keyframes
manual. Cukup tambahin class animate-*
ke elemen lo, dan boom — elemen lo langsung punya efek gerak yang kece.
Animasi Built-in Tailwind CSS v4 + Contoh Penggunaan Lengkap
Di bawah ini gue rangkum empat animasi bawaan paling sering dipakai di Tailwind CSS v4, lengkap sama penjelasan “kapan dipakai” dan potongan kode siap copy-paste. Tinggal ganti teks, warna, atau ukuran sesuai selera—langsung hidupin UI lo! 🚀
animate-spin
— ikon loading muter
Kapan dipakai? Saat butuh indikator proses (loaders, refresher).
Cara kerja: elemen diputar 360° terus-menerus.
<!-- Loader bulat -->
<div class="h-10 w-10 border-4 border-blue-500 border-t-transparent rounded-full animate-spin"></div>
<!-- Loader pakai icon (Heroicons/Feather/FontAwesome, dll.) -->
<svg class="h-6 w-6 text-blue-500 animate-spin" viewBox="0 0 24 24" fill="none">
<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4" class="opacity-25"/>
<path d="M4 12a8 8 0 018-8" stroke="currentColor" stroke-width="4" class="opacity-75"/>
</svg>
Hasilnya:

animate-bounce
— elemen mantul-mantul
Kapan dipakai? Buat narik perhatian (notifikasi, CTA).
Cara kerja: elemen lompat naik-turun secara periodik.
<!-- Badge notifikasi -->
<span class="inline-flex items-center px-3 py-1 text-sm font-medium text-white bg-green-500 rounded-full animate-bounce">
✔ Berhasil disimpan!
</span>
<!-- Panah scroll ke bawah -->
<svg class="h-8 w-8 text-gray-700 animate-bounce mt-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
</svg>
Hasilnya:

Tip: Kebanyakan bounce bikin pusing. Pakai di spot penting aja, lalu matikan setelah user interaksi (via JS → onClick
/tambah animate-none
).
animate-ping
— gelombang radar
Kapan dipakai? Menandai posisi (online status, titik map).
Cara kerja: muncul lingkaran membesar + memudar, terus mengulang.
<!-- Titik lokasi dengan efek ping -->
<span class="relative flex h-3 w-3">
<span class="animate-ping absolute inline-flex h-full w-full rounded-full bg-red-400 opacity-75"></span>
<span class="relative inline-flex rounded-full h-3 w-3 bg-red-500"></span>
</span>
Hasilnya:

Tip: Ping agak “berat” di banyak elemen. Batasi di satu-dua titik penting.
animate-pulse
— shimmer loading
Kapan dipakai? Skeleton screen atau button “bernafas”.
Cara kerja: opacity elemen naik-turun perlahan.
<!-- Skeleton -->
<div class="mx-auto w-full max-w-sm rounded-md p-4">
<div class="flex animate-pulse space-x-4">
<div class="size-10 rounded-full bg-gray-200"></div>
<div class="flex-1 space-y-6 py-1">
<div class="h-2 rounded bg-gray-200"></div>
<div class="space-y-3">
<div class="grid grid-cols-3 gap-4">
<div class="col-span-2 h-2 rounded bg-gray-200"></div>
<div class="col-span-1 h-2 rounded bg-gray-200"></div>
</div>
<div class="h-2 rounded bg-gray-200"></div>
</div>
</div>
</div>
</div>
Tip: Matikan pulse ketika data udah ready: ganti class ke warna final + hapus animate-pulse
.
Hasilnya:

Bikin Animasi Custom Sendiri di Tailwind CSS v4
Di Tailwind v4 bikin animasi jadi lebih mudah cuma pakai @keyframes
aja dijamin gak bakal ribet. Berikut kode untuk konfigurasi Tailwind, masukkan kode ini di tag <head>
yaa! Langsung aja kita bikin..!
animate-fade-in
CSS:
<style type="text/tailwindcss">
@theme {
--animate-fade-in: fade-in 0.6s ease-out forwards;
@keyframes fade-in {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
}
</style>
HTML:
<button
type="button"
class="px-4 py-1.5 bg-blue-500 text-white rounded-md animate-fade-in">
Fade
</button>
Hasilnya:

animate-slide-in
CSS:
<style type="text/tailwindcss">
@theme {
--animate-slide-in: slide-in 0.5s ease-out forwards;
@keyframes slide-in {
0% {
transform: translateX(100%);
}
100% {
transform: translateX(0);
}
}
}
</style>
HTML:
<button
type="button"
class="px-4 py-1.5 bg-blue-500 text-white rounded-md animate-slide-in">
Slide
</button>
Hasilnya:

animate-blur
CSS:
<style type="text/tailwindcss">
@theme {
--animate-blur: blur 0.6s ease-out forwards;
@keyframes blur {
0% {
filter: blur(8px);
opacity: 0;
}
100% {
filter: blur(0);
opacity: 1;
}
}
}
</style>
HTML:
<button
type="button"
class="px-4 py-1.5 bg-blue-500 text-white rounded-md hover:animate-blur"
>
Blur
</button>
Hasilnya:

animate-expand
CSS:
<style type="text/tailwindcss">
@theme {
--animate-expand: expand 0.4s ease-out forwards;
@keyframes expand {
0% {
transform: scale(0.8);
}
100% {
transform: scale(1);
}
}
}
</style>
HTML:
<button
type="button"
class="px-4 py-1.5 bg-blue-500 text-white rounded-md animate-expand">
Expand
</button>
Hasilnya:

animate-shrink
CSS:
<style type="text/tailwindcss">
@theme {
--animate-shrink: shrink 0.4s ease-out forwards;
@keyframes shrink {
0% {
transform: scale(1.1);
}
100% {
transform: scale(1);
}
}
}
</style>
HTML:
<button
type="button"
class="px-4 py-1.5 bg-blue-500 text-white rounded-md animate-shrink">
Shrink
</button>
Hasilnya:

animate-pop
CSS:
<style type="text/tailwindcss">
@theme {
--animate-pop: pop 0.3s ease-out;
@keyframes pop {
0%,
100% {
transform: scale(1);
}
50% {
transform: scale(1.15);
}
}
}
</style>
HTML:
<button
type="button"
class="px-4 py-1.5 bg-blue-500 text-white rounded-md animate-pop">
Pop
</button>
Hasilnya:

animate-shake
CSS:
<style type="text/tailwindcss">
@theme {
--animate-shake: shake 0.6s ease-in-out both;
@keyframes shake {
0%,
100% {
transform: translateX(0);
}
20%,
60% {
transform: translateX(-6px);
}
40%,
80% {
transform: translateX(6px);
}
}
}
</style>
HTML:
<button
type="button"
class="px-4 py-1.5 bg-blue-500 text-white rounded-md animate-shake">
Shake
</button>
Hasilnya:

animate-wobble
CSS:
<style type="text/tailwindcss">
@theme {
--animate-wobble: wobble 1s ease-in-out infinite;
@keyframes wobble {
0%,
100% {
transform: rotate(0deg);
}
25% {
transform: rotate(3deg);
}
75% {
transform: rotate(-3deg);
}
}
}
</style>
HTML:
<button
type="button"
class="px-4 py-1.5 bg-blue-500 text-white rounded-md animate-wobble">
Wobble
</button>
Hasilnya:

animate-seesaw
CSS:
<style type="text/tailwindcss">
@theme {
--animate-seesaw: seesaw 1.2s ease-in-out infinite;
@keyframes seesaw {
0%,
100% {
transform: rotate(0deg);
}
50% {
transform: rotate(8deg);
}
60% {
transform: rotate(6deg);
}
70% {
transform: rotate(8deg);
}
80% {
transform: rotate(0deg);
}
90% {
transform: rotate(2deg);
}
}
}
</style>
HTML:
<button
type="button"
class="px-4 py-1.5 bg-blue-500 text-white rounded-md animate-seesaw">
Seesaw
</button>
Hasilnya:

Rangkuman
✅ Kenapa butuh animasi custom?
Karena lo bisa bikin efek sesuai karakter brand lo: masuk dari samping, zoom in, fade out, dll.
✅ Bisa digabung sama Tailwind utility lain?
Bisa banget. Lo tetep bisa atur delay
, duration
, dan ease
secara fleksibel.
Tips & Best Practices
🚫 Jangan Berlebihan
Animasi itu kayak bumbu. Kalau kebanyakan, malah bikin eneg. Pakai secukupnya buat highlight interaksi penting aja (kayak buka modal, hover tombol, dsb).
🧑🦯 Gunakan motion-safe
Biar animasi nggak mengganggu pengguna yang pakai preferensi "reduce motion", kamu bisa tambahkan prefix ini:
<div class="motion-safe:animate-fade">Aman buat semua</div>
📱 Cek Performa di Perangkat Low-End
Beberapa animasi berat (seperti shadow blur + scale + opacity sekaligus) bisa bikin patah-patah di HP kentang. Coba tes di device real kalau bisa.
Penutup
Nah, sampai sini lo udah ngerti gimana powerful-nya animasi di Tailwind CSS v4. Mulai dari animasi siap pakai, bikin custom animasi sendiri pakai CSS, sampai nerapin di komponen kayak modal — semuanya bisa lo lakuin tanpa ribet.
Dengan fitur baru di v4, lo bisa:
- Bikin animasi sekali, pakai di mana aja.
- Nggak perlu oprek
tailwind.config.js
. - Lebih fleksibel buat trigger animasi via JavaScript.
Intinya? UI lo bakal jadi lebih hidup dan interaktif, tanpa harus ngoding panjang-panjang.
Kalau lo pengen explore lebih jauh, nih gue kasih beberapa referensi keren:
Ini gue kasih juga rekomendasi kelas gratis dari BuildWithAngga buat memperdalam TailwindCSS:
1. CSS Tailwind Web Design
Kelas ini cocok banget buat lo yang pengen ngedesain website modern dan clean pake Tailwind CSS.
Cocok buat pemula maupun yang udah pernah nyoba Tailwind tapi pengen lebih rapi dan estetik.
2. Belajar Tailwind CSS untuk Pemula Website Designer
Namanya juga buat pemula, jadi tenang aja, lo bakal dipandu dari nol. Cocok buat lo yang masih suka bingung bedain mt-4
sama mb-4
😆
3. HTML5 + Tailwind CSS: Creating Modern Eye-Catching Website
Gabungan antara HTML5 dan Tailwind, lo bakal diajarin bikin website yang gak cuma fungsional tapi juga menarik secara visual. Pokoknya gak cuma ngoding asal tampil.
4. Vue 3 + Tailwind CSS: Membuat Komponen Autocomplete
Khusus buat lo yang udah mainan Vue 3, kelas ini ngajarin cara bikin komponen autocomplete yang reusable dan stylish pake Tailwind. Keren buat portofolio lo juga nanti!
Semangat eksplor, bro! Animasi itu bukan cuma estetika — tapi juga bagian dari komunikasi desain yang baik. Jangan takut bereksperimen! 💪