Tombol dengan Animasi Keren
Berbagai efek tombol: ripple, geser warna, dan bayangan bergerak saat hover.
Kenapa Tombol Butuh Animasi?
Tombol adalah elemen paling sering diklik. Animasi kecil memberi feedback "klikmu diterima" dan membuat web terasa hidup. Perhatikan tombol di aplikasi favoritmu: hampir pasti ada efek hover atau tekan.
Tiga Efek yang Dibangun
1. Ripple (gelombang): Saat diklik, lingkaran menyebar dari titik klik seperti tetesan air. Caranya: JS membuat <span> di posisi klik, CSS menganimasikan scale dari 0 ke besar lalu menghapus span.
2. Geser warna: Background tombol "terisi" dari kiri ke kanan saat hover. Triknya: background: linear-gradient dengan background-size: 200% lalu geser background-position saat hover.
3. Tekan (press): Saat diklik tombol sedikit mengecil (transform: scale(0.96)) memakai pseudo-class :active. Ini meniru tombol fisik.
Prinsip Animasi yang Baik
- Cepat: 150-300ms. Lebih lama terasa lemot.
- Halus: pakai
easeataucubic-bezier, janganlinearuntuk gerakan UI. - Bermakna: animasi memberi informasi (diklik, loading, berhasil), bukan sekadar hiasan.
Kesalahan Umum
- Menganimasikan
width/heightyang memicu layout ulang dan patah-patah (animasikantransformdanopacityyang diakselerasi GPU). - Animasi terlalu banyak sekaligus hingga mengganggu.
- Efek hover tidak berguna di layar sentuh (pastikan tombol tetap jelas tanpa hover).
export default function App(): JSX.Element { return <h1>Hello world</h1> }
Tantangan
Tantangan: Tombol Loading
Buat tombol keempat "Kirim Data" yang saat diklik berubah menjadi spinner loading selama 2 detik (tombol disabled), lalu berubah menjadi "✓ Terkirim!" berwarna hijau.