Memberi gerakan yang bermakna pada antarmuka: memahami prinsip timing, easing, dan durasi, merancang micro-interaction yang membantu orientasi, serta menghormati preferensi reduced-motion, dengan praktik menganimasikan komponen utama KasirKita di Figma.

Setelah di episode 20 kita merancang state dan pemulihan, pada episode ini kita memberi gerakan — bukan demi gaya, melainkan untuk komunikasi. Motion design adalah cara antarmuka menjelaskan apa yang terjadi: elemen masuk dari mana, layar berpindah bagaimana, dan aksi dikonfirmasi dengan apa.
Mengapa penting? Gerakan yang tepat membuat pengguna selalu tahu posisi dan konteksnya (motion sebagai orientasi). Gerakan yang salah — terlalu lama, terlalu ramai, atau sembarangan — membuat produk terasa lambat dan tidak profesional. Di kasir yang kecepatannya segalanya, motion harus membantu, bukan menghambat.
Durasi motion berbanding lurus dengan jarak & kompleksitas elemen yang bergerak:
| Jenis gerakan | Durasi referensi |
|---|---|
| Micro-interaction (hover, tekan) | 100-200ms |
| Transisi panel/sheet | 200-300ms |
| Perpindahan layar penuh | 250-400ms |
| Elemen besar masuk (hero) | 400-600ms |
Aturannya: makin kecil elemen, makin cepat. Tombol yang "berdenyut" 500ms terasa mengantuk; panel yang meluncur 100ms terasa patah. Mulai dari angka referensi, lalu uji di perangkat nyata.
Easing menentukan kecepatan di awal vs akhir gerakan:
.linear { transition-timing-function: linear; } /* robotik */
.ease-out { transition-timing-function: ease-out; } /* berhenti pelan */
.ease-in-out { transition-timing-function: ease-in-out; } /* pergi-berhenti seimbang */
.custom { transition-timing-function: cubic-bezier(0.32, 0.72, 0, 1); } /* alami */Panduan praktis:
ease-out (mulai cepat, melambat saat berhenti).ease-in (percepat lalu pergi).ease-in-out.linear untuk gerakan di dunia nyata — benda fisik tidak bergerak konstan.Micro-interaction (dasar di episode 11) paling efektif saat ia mengonfirmasi hasil dan memberi status. Untuk KasirKita:
Rule: setiap motion harus menjawab "apa yang terjadi sekarang?" — jika gerakan tidak menambah jawaban, hapus.
Gerakan terbaik adalah yang tidak disadari sebagai "animasi" — ia terasa sebagai navigasi yang natural:
Sebagian pengguna menderita motion sickness atau gangguan vestibular; sebagian lagi hanya terganggu gerakan berlebihan. Sistem operasi menyediakan pengaturan reduce motion, dan web mengeksposnya lewat CSS:
@media (prefers-reduced-motion: reduce) {
.anim {
transition-duration: 0.01ms !important;
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
}
}Saat reduced-motion aktif, konten utama tetap tersampaikan — hanya gerakan dekoratif yang dimatikan. Transisi halaman bisa menjadi fade 100ms; skeleton tidak berdenyut; badge tidak berkedip. Ini bagian dari kepatuhan WCAG (POUR, episode 13).
Warning
Jangan pernah menempatkan informasi penting hanya di dalam gerakan — misal status "tersimpan" hanya tampil sebagai animasi ceklis yang lalu hilang. Pengguna reduced-motion (dan screen reader) harus tetap mendapatkan informasi lewat teks/ikon statis. Gerakan melengkapi, tidak menggantikan, konten.
Di Figma, gunakan fitur Smart Animate pada tab Prototype:
Ease Out.Tip
Dokumenkan motion sebagai token juga (misal duration.fast: 150ms, easing.out: cubic-bezier(...)) — konsisten dengan design tokens di episode 12. Developer bisa langsung memetakan ke CSS variables, sehingga gerakan di kode sama persis dengan di Figma.
linear dan durasi seragam membuat gerakan terasa robotik.Pada episode 21 ini, kalian telah memberi gerakan yang bermakna pada KasirKita.
Inti yang harus dibawa pulang:
ease-out untuk masuk, ease-in untuk keluar, hindari linear.Di episode 22 selanjutnya kita akan menyerahkan pekerjaan kepada developer: design handoff — Dev Mode, spec & annotation, token export DTCG, dan kolaborasi design review untuk KasirKita. Sampai jumpa di episode 22!