
Daftar Isi
- Pendahuluan
- Benefit Setelah Membaca
- Apa Itu Hover Effect?
- Hover Effects Sederhana
- Ubah Warna Teks dan Latar Belakang
- Penjelasan:
- Ubah Skala atau Rotasi Elemen
- Penjelasan:
- Ubah Warna Teks dan Latar Belakang
- Hover Effects Menengah
- Menggunakan group untuk Hover Anak Elemen
- Penjelasan:
- Shadow dan Border Transition
- Penjelasan:
- Menggunakan group untuk Hover Anak Elemen
- Hover Effects Kompleks
- Kombinasi Layering + Transform
- Penjelasan:
- Kombinasi Layering + Transform
- Implementasi Pada Proyek Mahouse App
- Efek Hover Pada Search Form
- Penjelasan:
- Efek Interaktif yang Terjadi:
- Efek Hover Pada Kategori
- Penjelasan:
- Efek Interaktif:
- Efek Hover Pada Search Form
- Tips & Best Practices
- Penutup
Pendahuluan
Hover effect adalah salah satu elemen penting dalam desain antarmuka modern. Efek ini bukan hanya sekadar mempercantik tampilan, tetapi juga memberikan feedback visual yang membuat pengalaman pengguna terasa lebih interaktif dan responsif. Di era pengembangan web yang serba cepat, kita butuh solusi yang fleksibel dan efisien dan di sinilah Tailwind CSS v4 hadir sebagai game changer. Dengan utilitas barunya, Tailwind CSS memungkinkan kita membuat hover effects yang tidak hanya sederhana, tapi juga kompleks dan menarik, tanpa harus menulis CSS dari nol. Di artikel ini, kita akan menjelajahi berbagai contoh hover effects, mulai dari yang paling basic hingga yang advanced, menggunakan Tailwind CSS v4.
Benefit Setelah Membaca
Setelah membaca artikel ini, kamu akan mendapatkan beberapa manfaat langsung yang bisa diterapkan ke dalam proyek kamu, antara lain:
- Memahami Konsep Hover Effect dengan Tailwind
Kamu jadi lebih paham bagaimana cara kerja efek hover di Tailwind CSS dan bagaimana mengaplikasikannya dengan efisien.
- Menguasai Utility Class Populer untuk Hover
Kamu terbiasa menggunakan class penting seperti transition-all
, duration-300
, group-hover
, ring
, focus-within
, dan lainnya yang sangat berguna dalam menciptakan efek interaktif.
- Mampu Menciptakan UI yang Interaktif dan Responsif
Dengan menggabungkan beberapa efek, kamu bisa membuat antarmuka yang lebih menarik tanpa perlu menulis CSS tambahan.
- Siap Menerapkan Hover Effect pada Komponen Nyata
Dari tombol, form input, hingga kartu dan slider — kamu kini punya referensi dan pola praktis untuk diterapkan langsung ke dalam desain UI/UX proyek kamu.
- Lebih Percaya Diri Mengeksplorasi Tailwind CSS v4
Kamu siap mencoba fitur-fitur baru di Tailwind CSS v4, termasuk animasi, masking, dan efek visual lainnya, dengan pendekatan yang lebih sistematis.
Apa Itu Hover Effect?
Secara sederhana, hover effect adalah perubahan visual yang terjadi saat kursor pengguna berada di atas suatu elemen biasanya tombol, gambar, atau kartu. Efek ini bisa berupa perubahan warna, ukuran, bayangan, rotasi, atau bahkan animasi yang lebih kompleks.
Hover effect punya peran penting dalam meningkatkan interaksi pengguna. Misalnya, saat pengguna mengarahkan kursor ke tombol dan warnanya berubah, itu memberi sinyal bahwa tombol tersebut bisa diklik. Efek ini terlihat simpel, tapi secara psikologis membantu pengguna merasa lebih “terhubung” dengan antarmuka.
Contoh paling umum dari hover effect adalah:
- Tombol yang berubah warna saat disentuh.
- Gambar yang sedikit membesar saat diarahkan kursor.
- Kartu produk yang menampilkan informasi tambahan saat di-hover.
Dengan kata lain, hover effect adalah cara mudah dan cepat untuk membuat website terasa lebih hidup dan responsif tanpa harus menambahkan logika JavaScript yang rumit. Tailwind CSS v4 memungkinkan kita membuat semua efek ini hanya dengan utility class yang bersih dan mudah dibaca.
Hover Effects Sederhana
Ubah Warna Teks dan Latar Belakang
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
Hover Saya
</button>
Penjelasan:
bg-blue-500
: Memberikan latar belakang biru (tingkat kecerahan 500).hover:bg-blue-700
: Saat kursor diarahkan, warna latar berubah menjadi biru yang lebih gelap (700).text-white
: Warna teks menjadi putih.font-bold
: Membuat teks lebih tebal.py-2 px-4
: Padding vertikal 2 dan horizontal 4 (jarak dalam tombol).rounded
: Membuat sudut tombol menjadi melengkung (rounded default).
Efek: Saat kursor diarahkan ke tombol, latar belakang tombol akan berubah warna dari biru terang ke biru gelap.
Ubah Skala atau Rotasi Elemen
<div class="hover:scale-105 transition-transform duration-300">
Konten saya
</div>
Penjelasan:
hover:scale-105
: Saat di-hover, elemen akan membesar sedikit (105% dari ukuran asli).transition-transform
: Mengaktifkan transisi halus untuk properti transform.duration-300
: Lama transisi adalah 300 milidetik.
Efek: Saat elemen disentuh kursor, ukurannya membesar sedikit dengan efek animasi yang halus.
Hover Effects Menengah
Menggunakan group
untuk Hover Anak Elemen
<div class="group">
<img src="gambar.jpg" alt="Gambar" />
<p class="opacity-0 group-hover:opacity-100 transition">
Deskripsi yang muncul saat di-hover
</p>
</div>
Penjelasan:
group
: Menandai elemen induk sebagai sebuah grup. Ini diperlukan agar anak-anaknya bisa meresponshover
dari induknya.opacity-0
: Teks<p>
awalnya disembunyikan dengan membuat opasitas 0 (transparan).group-hover:opacity-100
: Saat elemen induk (div.group
) di-hover, teks akan muncul (opasitas jadi 100).transition
: Memberi efek transisi halus saat opasitas berubah.
Efek: Ketika pengguna mengarahkan kursor ke seluruh kotak (div
), teks deskripsi yang tersembunyi akan muncul dengan animasi halus.
Shadow dan Border Transition
<div class="p-4 border border-gray-300 rounded hover:shadow-xl hover:border-blue-500 transition-all duration-300">
Konten Card
</div>
Penjelasan:
p-4
: Padding ke dalam sebesar 1rem (jarak isi konten dari tepi elemen).border border-gray-300
: Menambahkan border abu-abu tipis di sekeliling elemen.rounded
: Sudut elemen membulat.hover:shadow-xl
: Saat di-hover, elemen menampilkan bayangan besar (shadow ekstra).hover:border-blue-500
: Saat di-hover, border berubah warna menjadi biru cerah.transition-all
: Mengaktifkan animasi untuk semua properti CSS yang bisa berubah.duration-300
: Durasi transisi selama 300ms.
Efek: Saat pengguna mengarahkan kursor, elemen akan terlihat "terangkat" dengan bayangan besar dan garis pinggir (border) berubah warna, memberikan kesan interaktif.
Hover Effects Kompleks
Kombinasi Layering + Transform
<div class="relative overflow-hidden group">
<img src="gambar.jpg" alt="Gambar" class="transition-transform duration-500 group-hover:scale-110" />
<div class="absolute inset-0 bg-black bg-opacity-50 opacity-0 group-hover:opacity-100 transition-opacity duration-500"></div>
</div>
Penjelasan:
relative
: Elemen pembungkus dibuat relatif agar anak dengan posisiabsolute
bisa menempel berdasarkan elemen ini.overflow-hidden
: Memastikan elemen yang membesar (seperti gambar saat di-hover) tidak meluber ke luar.group
: Digunakan agar anak elemen bisa merespon hover dari elemen induk.
Elemen <img>
:
transition-transform duration-500
: Mengatur efek transisi pada transformasi (dalam hal ini skala) selama 500ms.group-hover:scale-110
: Saat induk di-hover, gambar membesar 110%.
Elemen <div>
overlay:
absolute inset-0
: Menjadikan div ini melapisi seluruh area induknya.bg-black bg-opacity-50
: Warna hitam transparan (sebagai overlay).opacity-0
: Awalnya tak terlihat.group-hover:opacity-100
: Muncul saat di-hover.transition-opacity duration-500
: Transisi halus pada perubahan opasitas.
Efek: Saat pengguna mengarahkan kursor, gambar akan membesar, dan overlay gelap akan muncul dari atasnya. Cocok untuk kartu gambar yang ingin memberi highlight atau preview interaktif.
Implementasi Pada Proyek Mahouse App
Sekarang kita akan coba implentasi efek hover pada desain Mahouse App dari shaynakit.com, kalian bisa unduh templatenya di sini.
Efek Hover Pada Search Form


Kode:
<!-- Search Input -->
<form
class="group flex items-center gap-4 mt-[30px] bg-accent rounded-full px-5 mx-6 py-3.5 transition-all duration-300 focus-within:ring focus-within:ring-foreground hover:ring hover:ring-foreground"
>
<img
src="./assets/images/icons/search-normal.svg"
class="h-6 w-6 shrink-0"
/>
<input
class="w-full placeholder-secondary text-[16px] group-hover:outline-none focus:outline-none"
placeholder="Search by city or agent"
/>
</form>
Penjelasan:
Elemen <form>
(Container Utama):
<form class="group flex items-center gap-4 mt-[30px] bg-accent rounded-full px-5 mx-6 py-3.5 transition-all duration-300 focus-within:ring focus-within:ring-foreground hover:ring hover:ring-foreground">
group
: Menandai elemen ini sebagai grup agar elemen anak (input
) bisa merespons hover dari parent.flex items-center
: Mengatur isi form horizontal & center secara vertikal.gap-4
: Memberi jarak antar elemen (icon dan input).mt-[30px]
: Margin atas 30px (nilai kustom).bg-accent
: Warna latar belakang, biasanya didefinisikan dalam config Tailwind.rounded-full
: Sudut elemen dibulatkan total (seperti kapsul).px-5 py-3.5
: Padding horizontal 1.25rem & vertical 0.875rem.mx-6
: Margin kiri-kanan 1.5rem.transition-all duration-300
: Transisi halus selama 300ms untuk semua properti yang bisa dianimasikan.focus-within:ring focus-within:ring-foreground
: Menambahkan efek ring (seperti border glow) saat salah satu anak (misalnya input) sedang fokus.hover:ring hover:ring-foreground
: Menambahkan efek ring saat form di-hover.
Elemen <img>
(Ikon Search):
<img src="./assets/images/icons/search-normal.svg" class="h-6 w-6 shrink-0" />
src
: Gambar ikon pencarian.h-6 w-6
: Ukuran ikon 1.5rem × 1.5rem.shrink-0
: Mencegah ikon mengecil saat ruang terbatas.
Elemen <input>
(Kolom Input):
<input
class="w-full placeholder-secondary text-[16px] group-hover:outline-none focus:outline-none"
placeholder="Search by city or agent"
/>
w-full
: Input mengambil lebar penuh dari ruang tersisa.placeholder-secondary
: Warna teks placeholder (biasanya abu-abu muda, tergantung theme).text-[16px]
: Ukuran font 16px (kustom, bukan skala Tailwind default).group-hover:outline-none
: Menghapus outline bawaan browser saat parent (form
) di-hover.focus:outline-none
: Menghilangkan outline saat input difokuskan (digantikan denganring
di parent).
Efek Interaktif yang Terjadi:
- Saat hover, form akan menunjukkan garis
ring
di sekelilingnya. - Saat input difokuskan, efek
ring
muncul juga (berkatfocus-within
). - Semua efek transisinya halus dan responsif.
- Input akan tetap bersih tanpa outline bawaan browser.
Efek Hover Pada Kategori

Kode:
<a href="#" class="swiper-slide group max-w-[130px]">
<div class="flex flex-col gap-4 items-center justify-center py-5 bg-accent rounded-[16px] w-[130px] transition-all duration-300 group-hover:ring group-hover:ring-foreground">
<div class="w-[60px] h-[60px] bg-primary rounded-full flex items-center justify-center shrink-0">
<img src="./assets/images/icons/building-4.svg" />
</div>
<div class="text-center">
<h3 class="font-semibold text-[16px]">City</h3>
<p class="text-secondary text-[14px]">829 house</p>
</div>
</div>
</a>
Penjelasan:
Elemen <a>
:
<a href="#" class="swiper-slide group max-w-[130px]">
a
: Elemen anchor sebagai kontainer klik (bisa diarahkan ke halaman daftar properti berdasarkan kota).swiper-slide
: Kelas dari Swiper.js yang menunjukkan bahwa ini adalah satu slide.group
: Menandai elemen ini sebagai parent group, agar elemen anak bisa merespons eventhover
dari sini.max-w-[130px]
: Batas maksimal lebar 130px agar tampilan seragam dalam slider.
Elemen <div>
(Isi Kartu):
<div class="flex flex-col gap-4 items-center justify-center py-5 bg-accent rounded-[16px] w-[130px] transition-all duration-300 group-hover:ring group-hover:ring-foreground">
flex flex-col
: Susun elemen secara vertikal.gap-4
: Jarak antar elemen (ikon dan teks) sebesar1rem
.items-center justify-center
: Pusatkan elemen secara horizontal dan vertikal.py-5
: Padding atas dan bawah.bg-accent
: Warna latar belakang khusus, didefinisikan di Tailwind config (biasanya netral terang).rounded-[16px]
: Border-radius khusus sebesar 16px.w-[130px]
: Lebar tetap agar sejajar denganmax-w
sebelumnya.transition-all duration-300
: Transisi animasi halus selama 300ms.group-hover:ring group-hover:ring-foreground
: Saat kartu di-hover, akan muncul efek ring (glow) di sekitar border dengan warna teks aktif (foreground
).
Ikon kategori:
<div class="w-[60px] h-[60px] bg-primary rounded-full flex items-center justify-center shrink-0">
<img src="./assets/images/icons/building-4.svg" />
</div>
w-[60px] h-[60px]
: Ukuran ikon bulat 60px × 60px.bg-primary
: Warna latar ikon (biasanya warna utama branding).rounded-full
: Membuat ikon jadi bulat.flex items-center justify-center
: Posisi gambar tepat di tengah.shrink-0
: Mencegah elemen mengecil saat ruang sempit.
Teks dan Jumlah Rumah:
<div class="text-center">
<h3 class="font-semibold text-[16px]">City</h3>
<p class="text-secondary text-[14px]">829 house</p>
</div>
text-center
: Rata tengah untuk teks di bawah ikon.h3
: Nama kategori.font-semibold
: Tebal sedang.text-[16px]
: Ukuran font 16px.
p
: Info jumlah rumah.text-secondary
: Warna abu-abu sekunder untuk teks informasi.text-[14px]
: Ukuran lebih kecil.
Efek Interaktif:
- Hover: Saat pengguna mengarahkan kursor ke salah satu kartu:
- Muncul efek ring (seperti glow border) pada keseluruhan kartu.
- Transisi efek dilakukan secara halus.
- Responsif: Karena ini digunakan dalam slider (
swiper-slide
), bisa disesuaikan tampilannya di berbagai ukuran layar.
Tips & Best Practices
Efek hover bisa membuat tampilan UI menjadi lebih menarik, tetapi perlu digunakan secara bijak agar tidak mengganggu pengalaman pengguna. Berikut beberapa tips yang bisa kamu terapkan:
- Jangan terlalu berlebihan dalam efek.
Gunakan efek hover seperlunya. Terlalu banyak animasi atau transisi bisa membuat tampilan terlihat berantakan dan mengurangi fokus pengguna.
- Prioritaskan performa dan aksesibilitas.
Efek visual yang kompleks bisa memengaruhi performa, terutama pada perangkat dengan spesifikasi rendah. Pastikan juga elemen-elemen penting dapat diakses menggunakan keyboard dengan menambahkan focus
, focus-visible
, atau focus-within
.
- Gunakan efek yang sesuai konteks.
Hover effect sebaiknya mendukung tujuan elemen. Misalnya, tombol aksi utama boleh memiliki efek mencolok, sedangkan elemen navigasi cukup dengan efek sederhana agar tidak mengganggu hierarki visual.
Penutup
Dalam artikel ini, kita telah membahas berbagai jenis hover effects menggunakan Tailwind CSS v4 mulai dari efek yang sederhana seperti perubahan warna, bayangan, dan transisi, hingga yang lebih kompleks seperti masking.
Tailwind CSS v4 memberikan keleluasaan untuk membuat interaksi yang menarik dengan tetap mempertahankan kinerja dan konsistensi desain. Kamu hanya perlu menggabungkan beberapa utility class, tanpa menulis CSS tambahan.
Sekarang saatnya kamu mencoba sendiri. Eksplorasi lebih dalam, sesuaikan efek sesuai kebutuhan UI/UX proyekmu, dan jangan takut bereksperimen!