Microinteractions & Animation — UI/UX

Microinteractions & Animation — Detail yang Bikin UI Terasa Hidup Microinteractions adalah animasi kecil yang memberi feedback saat user berinteraksi dengan…

Microinteractions & Animation — Detail yang Bikin UI Terasa Hidup

Microinteractions adalah animasi kecil yang memberi feedback saat user berinteraksi dengan antarmuka — tombol yang sedikit "menekan" saat diklik, checkmark yang muncul dengan animasi, progress bar yang smooth. Mereka terlihat sepele, tapi membedakan aplikasi yang terasa "mahal" dari yang terasa "murah".

4 Bagian Anatomi Microinteraction

Menurut Dan Saffer (penulis buku Microinteractions):

  1. Trigger — apa yang memulai interaksi (klik, hover, scroll, load)
  2. Rules — apa yang terjadi (state berubah, animasi berjalan)
  3. Feedback — bagaimana user tahu itu terjadi (visual, suara, haptic)
  4. Loops & Modes — apa yang terjadi setelahnya, apakah berulang atau tidak

Jenis Microinteractions Umum

1. Hover & Focus feedback

.button {
  background: #2563eb;
  transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);
}

.button:hover {
  background: #1d4ed8;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);
}

.button:active {
  transform: translateY(0);  /* "menekan" saat diklik */
}

Shadow yang naik + 1px elevation = tombol terasa tactile. Tanpa animasi, tombol terasa statis dan "mati".

2. Loading states — progress indicator

Jangan biarkan user bingung. Kalau aksi > 100ms, kasih feedback:

3. State transitions — checkbox, toggle

.checkbox {
  transition: background 150ms, border-color 150ms;
}

.checkbox-checked {
  animation: pop 200ms cubic-bezier(0.4, 0, 0.6, 1);
}

@keyframes pop {
  0% { transform: scale(1); }
  50% { transform: scale(1.1); }
  100% { transform: scale(1); }
}

Sedikit "pop" saat centang dicek memberi konfirmasi visceral bahwa aksi berhasil.

4. Page transitions & navigation

Gunakan view-transition-name (lesson Web Animation) untuk transisi halus antar halaman. Atau Framer Motion layoutId untuk shared element animation.

Durasi & Easing — Angka yang Harus Kamu Ingat

Interaksi Durasi Easing
Hover / micro-feedback 100–200ms ease-out
Modal / drawer open 250–350ms cubic-bezier(0.4, 0, 0.2, 1)
Page transition 300–500ms ease-in-out
Celebration (success) 500–800ms cubic-bezier(0.34, 1.56, 0.64, 1) — overshoot

Prinsip: animasi UI yang "normal" = 200–300ms. Lebih lama dari 500ms terasa lamban. Lebih cepat dari 100ms terasa jerky.

Respect Preferensi User

Selalu hormati prefers-reduced-motion untuk user dengan gangguan vestibular atau yang mudah pusing:

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

Atau di JS:

const prefersReduced = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
const duration = prefersReduced ? 0 : 300;

Jangan Overdo It

Good microinteractions disadari, not seen. Kalau user tiba-tiba berkata "wow animasinya keren!" — biasanya berarti terlalu mencolok dan akan mengganggu pada interaksi ke-10, ke-100, ke-1000.

Tanda-tanda animasi berlebihan:

Checklist Sebelum Ship

Aturan emas: microinteractions adalah komunikasi, bukan dekorasi. Setiap animasi harus menjawab "apa yang baru saja terjadi?" atau "apa yang akan terjadi?".

Yang akan kamu pelajari