DEV Community

Eris Sulistina
Eris Sulistina

Posted on

CSS Pseudo-classes Cheat Sheet πŸ”

CSS memiliki banyak pseudo-class yang memungkinkan kita menarget elemen berdasarkan status, struktur, dan interaksi. Berikut ini adalah ringkasan beberapa pseudo-class yang dikelompokkan berdasarkan kategori, lengkap dengan deskripsi singkat dan tingkat prioritas mempelajarinya.


πŸ‘οΈ Element display state pseudo-classes

Pseudo-class berikut digunakan untuk menarget elemen berdasarkan status tampilannya.

Pseudo-class Keterangan Prioritas
:fullscreen Menargetkan elemen saat berada dalam mode fullscreen ⭐⭐
:modal Menargetkan elemen yang sedang terbuka sebagai modal ⭐⭐⭐⭐
:picture-in-picture Menargetkan elemen ⭐
:open Menargetkan elemen seperti yang sedang terbuka ⭐⭐⭐
:popover-open Menargetkan elemen yang sedang terbuka sebagai popover ⭐⭐⭐⭐

⌨️ Input pseudo-classes

Digunakan untuk menarget elemen input berdasarkan status, validasi, dan interaksi pengguna.

Pseudo-class Keterangan Prioritas
:autofill Menargetkan field form yang diisi otomatis oleh browser ⭐
:enabled Menargetkan elemen input yang tidak dinonaktifkan ⭐⭐
:disabled Menargetkan elemen input yang dinonaktifkan ⭐⭐⭐
:read-only Menargetkan elemen input yang bersifat hanya-baca ⭐⭐
:placeholder-shown Menargetkan input yang sedang menampilkan placeholder ⭐⭐⭐
:default Menargetkan elemen input yang menjadi pilihan default ⭐
:checked Menargetkan input seperti checkbox/radio yang tercentang ⭐⭐⭐⭐⭐
:blank Menargetkan input kosong (belum diisi sama sekali) ⭐
:valid Menargetkan input yang lolos validasi HTML5 ⭐⭐
:user-valid Menargetkan input valid setelah ada interaksi user ⭐⭐⭐
:invalid Menargetkan input yang gagal validasi HTML5 ⭐⭐
:user-invalid Menargetkan input tidak valid setelah ada interaksi user ⭐⭐⭐
:in-range Menargetkan input dengan nilai di dalam rentang yang valid ⭐
:out-of-range Menargetkan input dengan nilai di luar rentang yang valid ⭐
:required Menargetkan input yang wajib diisi ⭐⭐⭐
:optional Menargetkan input yang tidak wajib diisi ⭐

🌍 Location Pseudo-classes

Digunakan untuk menarget link atau elemen berdasarkan URL dan fragment.

Pseudo-class Keterangan Prioritas
:any-link Menargetkan semua elemen dengan atribut href, baik yang dikunjungi maupun belum ⭐⭐⭐
:link Menargetkan link yang belum dikunjungi ⭐⭐⭐⭐⭐
:visited Menargetkan link yang sudah dikunjungi ⭐⭐⭐⭐⭐
:local-link Menargetkan link yang mengarah ke halaman yang sama (internal link) ⭐
:target Menargetkan elemen yang sesuai dengan fragment identifier di URL (misalnya #section) ⭐⭐⭐
:target-within Menargetkan elemen yang mengandung target ⭐⭐⭐

🌳 Tree-structural Pseudo-classes

Digunakan untuk menarget elemen berdasarkan struktur DOM-nya.

Pseudo-class Keterangan Prioritas
:root Menargetkan elemen root dari dokumen (biasanya )β€”berguna untuk deklarasi CSS global seperti variabel ⭐⭐⭐⭐⭐
:empty Menargetkan elemen yang tidak memiliki anak (termasuk teks, komentar, dan elemen) ⭐⭐⭐
:first-child Menargetkan elemen yang merupakan anak pertama dari parent-nya ⭐⭐⭐⭐
:first-of-type Menargetkan elemen pertama dari jenisnya di antara sibling-nya ⭐⭐⭐
:last-child Menargetkan elemen terakhir dari parent-nya ⭐⭐⭐⭐
:last-of-type Menargetkan elemen terakhir dari jenisnya di antara sibling-nya ⭐⭐⭐
:nth-child() Menargetkan elemen berdasarkan urutan posisinya dalam parent ⭐⭐⭐⭐⭐
:nth-last-child() Menargetkan elemen dari belakang berdasarkan urutan dalam parent ⭐⭐⭐⭐
:nth-of-type() Menargetkan elemen berdasarkan urutan dari jenisnya di antara sibling-nya ⭐⭐⭐⭐
:nth-last-of-type() Menargetkan elemen terakhir dari jenisnya di antara sibling-nya dari belakang ⭐⭐⭐
:only-child Menargetkan elemen yang merupakan satu-satunya anak dari parent-nya ⭐⭐⭐⭐⭐
:only-of-type Menargetkan elemen yang merupakan satu-satunya dari jenisnya di antara sibling-nya ⭐⭐

πŸ–±οΈ User Action Pseudo-classes

Menargetkan elemen berdasarkan interaksi pengguna seperti hover, klik, atau fokus.

Pseudo-class Keterangan Prioritas
:hover Menargetkan elemen saat pointer berada di atasnya ⭐⭐⭐⭐⭐
:active Menargetkan elemen saat sedang di-klik atau di-tap ⭐⭐⭐⭐⭐
:focus Menargetkan elemen saat mendapatkan fokus input (keyboard, mouse, dll) ⭐⭐⭐⭐⭐
:focus-visible Fokus hanya terlihat ketika pengguna menavigasi dengan keyboard/tab (bukan mouse) ⭐⭐⭐⭐
:focus-within Menargetkan elemen yang memiliki anak yang sedang fokus ⭐⭐⭐

🧩 Functional Pseudo-classes

Ini adalah pseudo-class dengan tanda kurung () dan biasanya digunakan untuk membuat selector lebih dinamis dan fleksibel.

Pseudo-class Keterangan Prioritas
:is() Menyederhanakan penulisan selector kompleks. Cocok untuk menarget banyak elemen sekaligus. ⭐⭐⭐⭐⭐
:where() Mirip seperti :is(), tapi tidak berkontribusi pada specificity (sangat berguna untuk reset atau default styling) ⭐⭐⭐⭐
:has() Selector powerful yang bisa memilih elemen berdasarkan anak/cucu atau kontennya (parent selector!) ⭐⭐⭐⭐⭐
:not() Menargetkan elemen kecuali yang memenuhi selector tertentu ⭐⭐⭐⭐⭐

Keempat pseudo-class ini sangat powerful dan wajib dikuasai karena membuat kita bisa menulis selector yang lebih ekspresif dan maintainable.

Disclaimer: Penilaian kolom prioritas datangnya murni dari opini saya sendiri. Jadi jika kamu tidak setuju, silakan sesuaikan.

Kalau kamu suka cheat sheet ini, jangan lupa πŸ’– save, πŸ—¨οΈ comment, atau πŸ” share ke sesama web developer lainnya!

Sampai jumpa di tulisan selanjutnya πŸ‘‹

Top comments (0)