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)