Pseudo-classes — CSS

Tombol biasa diem-diem aja gak menarik. Tapi pas mouse mendekat berubah warna jadi lebih gelap (hover), pas dipencet beneran nyusut sedikit (active), pas form…

Bayangin lampu teras yang cuma nyala waktu ada orang lewat. Lampunya sama, yang beda keadaannya. Pseudo-class adalah tambahan di selector yang bilang "pakai gaya ini cuma dalam keadaan tertentu": waktu mouse ada di atas elemen, waktu kolom isian lagi diklik, atau waktu elemen itu anak pertama di daftarnya. Ditulis pakai satu titik dua, nempel di belakang selector: a:hover.

🧪 Tebakan cepat: a { color: blue; } lalu a:hover { color: red; }. Link-nya merah terus atau cuma kadang-kadang? Tebak dulu, jawabannya ada di bagian "Ganti warna waktu mouse di atasnya".

Ganti warna waktu mouse di atasnya

<a href="#">Hover aku!</a>

<style>
a { color: blue; }
a:hover { color: red; }
</style>

Hasilnya, link-nya biru. Arahkan mouse ke atasnya, dia jadi merah. Geser mouse-nya pergi, dia biru lagi. Itu jawaban tebakannya: cuma kadang-kadang. Perhatikan juga, a:hover ditulis sebagai aturan baru di bawah aturan a, bukan mengganti aturan a.

Keadaan lain yang sering dipakai: :focus (kolom isian yang lagi diklik atau diisi) dan :active (elemen yang lagi ditekan).

Pilih berdasarkan urutan

Pseudo-class juga bisa memilih elemen dari urutannya di dalam induknya (elemen yang membungkusnya):

li:first-child { color: red; }
li:last-child { color: gray; }
li:nth-child(3) { font-weight: bold; }

Aturan li { ... } yang biasa tetap berlaku buat item lain. Jadi li:first-child { color: red; } cuma bikin item pertama merah, sisanya tetap pakai warna dari li.

Nama pseudo-class harus persis. :first, :nth(1), :click, dan :over gak bisa dipakai buat memilih elemen, jadi browser mengabaikan aturannya.

⚠️ Jebakan yang sering ketemu

TL;DR: Pseudo-class menambahkan syarat ke selector, ditulis pakai satu titik dua tanpa spasi. :hover berlaku waktu mouse di atas elemen, :focus waktu kolom isian diklik, :active waktu ditekan. :first-child, :last-child, dan :nth-child(n) memilih berdasarkan urutan di dalam induknya. Tulis sebagai aturan baru, jangan mengganti aturan yang lama.

Yang akan kamu pelajari