Thursday

19-06-2025 Vol 19

CSS Pseudo-classes Cheat Sheet πŸ”

CSS Pseudo-classes Cheat Sheet: Panduan Lengkap untuk Developer

Pseudo-classes CSS adalah kunci untuk menambahkan gaya dinamis dan interaktif ke elemen HTML Anda. Mereka memungkinkan Anda menargetkan elemen berdasarkan statusnya (misalnya, saat dihover, diklik, atau difokuskan) dan memodifikasi penampilannya sesuai dengan itu. Cheat sheet ini akan menjadi panduan lengkap Anda untuk memahami dan menggunakan berbagai pseudo-classes CSS.

Daftar Isi

  1. Apa Itu Pseudo-classes CSS?
  2. Struktur dan Sintaks Pseudo-classes
  3. Pseudo-classes Umum dan Paling Sering Digunakan
    1. :hover
    2. :active
    3. :focus
    4. :visited
    5. :link
    6. :first-child
    7. :last-child
    8. :nth-child
    9. :nth-of-type
    10. :first-of-type
    11. :last-of-type
    12. :only-child
    13. :only-of-type
    14. :empty
    15. :disabled
    16. :enabled
    17. :checked
    18. :required
    19. :optional
    20. :valid
    21. :invalid
    22. :in-range
    23. :out-of-range
    24. :read-only
    25. :read-write
    26. :default
    27. :indeterminate
    28. :placeholder-shown
  4. Pseudo-classes Struktur Pohon (Tree-Structural Pseudo-classes)
    1. :root
    2. :empty
    3. :nth-child() dengan Rumus
    4. :nth-last-child()
    5. :nth-of-type() dengan Rumus
    6. :nth-last-of-type()
  5. Pseudo-classes UI (User Interface Pseudo-classes)
  6. :target Pseudo-class
  7. Contoh Penggunaan Pseudo-classes dalam Proyek Nyata
  8. Praktik Terbaik dalam Menggunakan Pseudo-classes
  9. Kesimpulan

Apa Itu Pseudo-classes CSS?

Pseudo-classes adalah kata kunci yang ditambahkan ke selector untuk menentukan keadaan khusus dari elemen. Misalnya, Anda bisa menggunakan pseudo-class :hover untuk mengubah warna tombol saat kursor mouse berada di atasnya. Mereka memungkinkan Anda menerapkan gaya ke elemen berdasarkan faktor-faktor selain posisinya dalam struktur dokumen.

Perbedaan utama antara pseudo-classes dan classes biasa adalah bahwa classes biasa ditetapkan secara eksplisit dalam HTML, sedangkan pseudo-classes diterapkan secara dinamis oleh browser berdasarkan interaksi pengguna atau status elemen.

Struktur dan Sintaks Pseudo-classes

Sintaks dasar untuk menggunakan pseudo-classes adalah:

selector:pseudo-class { property: value; }

  • selector: Elemen HTML yang ingin Anda targetkan.
  • :pseudo-class: Pseudo-class yang ingin Anda gunakan (misalnya, :hover, :focus).
  • { property: value; }: Gaya CSS yang akan diterapkan ketika keadaan pseudo-class terpenuhi.

Contoh:

a:hover { color: red; }

Ini akan mengubah warna teks dari semua elemen <a> menjadi merah ketika mouse berada di atasnya.

Pseudo-classes Umum dan Paling Sering Digunakan

:hover

Pseudo-class :hover digunakan untuk menerapkan gaya ketika kursor mouse berada di atas elemen. Ini sangat umum digunakan untuk tombol, tautan, dan elemen interaktif lainnya.

Contoh:

button:hover { background-color: #ddd; color: black; }

Kode ini akan mengubah warna latar belakang tombol menjadi abu-abu muda dan warna teks menjadi hitam saat mouse berada di atasnya.

:active

Pseudo-class :active digunakan untuk menerapkan gaya saat elemen sedang diaktifkan, misalnya saat tombol sedang ditekan atau tautan sedang diklik.

Contoh:

button:active { background-color: #bbb; box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); }

Kode ini akan mengubah warna latar belakang tombol menjadi abu-abu lebih gelap dan menambahkan bayangan saat tombol sedang ditekan.

:focus

Pseudo-class :focus digunakan untuk menerapkan gaya saat elemen difokuskan, biasanya melalui tab navigation atau dengan mengklik elemen input.

Contoh:

input:focus { border: 2px solid blue; outline: none; }

Kode ini akan menambahkan border biru tebal ke elemen input yang sedang difokuskan dan menghapus outline default browser.

:visited

Pseudo-class :visited digunakan untuk menerapkan gaya ke tautan yang telah dikunjungi oleh pengguna. Perhatikan bahwa terdapat batasan keamanan yang signifikan terkait dengan pseudo-class ini, sehingga penggunaannya terbatas.

Contoh:

a:visited { color: purple; }

Kode ini akan mengubah warna tautan yang telah dikunjungi menjadi ungu.

Pseudo-class :link digunakan untuk menerapkan gaya ke tautan yang belum dikunjungi oleh pengguna.

Contoh:

a:link { color: blue; }

Kode ini akan mengubah warna tautan yang belum dikunjungi menjadi biru.

:first-child

Pseudo-class :first-child digunakan untuk menargetkan elemen yang merupakan anak pertama dari elemen induknya.

Contoh:

li:first-child { font-weight: bold; }

Kode ini akan membuat teks pada item daftar pertama menjadi tebal.

:last-child

Pseudo-class :last-child digunakan untuk menargetkan elemen yang merupakan anak terakhir dari elemen induknya.

Contoh:

li:last-child { border-bottom: none; }

Kode ini akan menghapus border bawah dari item daftar terakhir.

:nth-child

Pseudo-class :nth-child(n) digunakan untuk menargetkan elemen yang merupakan anak ke-n dari elemen induknya. ‘n’ bisa berupa angka, kata kunci (even, odd), atau rumus.

Contoh:

li:nth-child(2) { color: green; }

Kode ini akan mengubah warna teks pada item daftar kedua menjadi hijau.

:nth-of-type

Pseudo-class :nth-of-type(n) mirip dengan :nth-child(n), tetapi hanya mempertimbangkan elemen dengan jenis yang sama.

Contoh:

p:nth-of-type(2) { font-style: italic; }

Kode ini akan membuat teks pada paragraf kedua dalam sebuah elemen induk menjadi miring.

:first-of-type

Pseudo-class :first-of-type digunakan untuk menargetkan elemen pertama dari jenis tertentu dalam elemen induk.

Contoh:

p:first-of-type { font-size: 1.2em; }

Kode ini akan memperbesar ukuran font paragraf pertama dalam elemen induk.

:last-of-type

Pseudo-class :last-of-type digunakan untuk menargetkan elemen terakhir dari jenis tertentu dalam elemen induk.

Contoh:

p:last-of-type { margin-bottom: 0; }

Kode ini akan menghapus margin bawah paragraf terakhir dalam elemen induk.

:only-child

Pseudo-class :only-child digunakan untuk menargetkan elemen yang merupakan satu-satunya anak dari elemen induknya.

Contoh:

p:only-child { text-align: center; }

Kode ini akan memusatkan teks paragraf jika paragraf tersebut adalah satu-satunya anak dari elemen induknya.

:only-of-type

Pseudo-class :only-of-type digunakan untuk menargetkan elemen yang merupakan satu-satunya elemen dari jenis tertentu dalam elemen induk.

Contoh:

p:only-of-type { color: red; }

Kode ini akan mengubah warna teks paragraf menjadi merah jika paragraf tersebut adalah satu-satunya paragraf dalam elemen induk.

:empty

Pseudo-class :empty digunakan untuk menargetkan elemen yang tidak memiliki anak (termasuk node teks).

Contoh:

div:empty { display: none; }

Kode ini akan menyembunyikan elemen <div> jika tidak memiliki konten apa pun.

:disabled

Pseudo-class :disabled digunakan untuk menargetkan elemen form yang dinonaktifkan (misalnya, <input>, <button>).

Contoh:

input:disabled { background-color: #ddd; color: #888; cursor: not-allowed; }

Kode ini akan mengubah warna latar belakang elemen input yang dinonaktifkan menjadi abu-abu muda, warna teks menjadi abu-abu, dan kursor menjadi “not-allowed”.

:enabled

Pseudo-class :enabled digunakan untuk menargetkan elemen form yang diaktifkan.

Contoh:

input:enabled { border: 1px solid #ccc; }

Kode ini akan memberikan border abu-abu pada elemen input yang diaktifkan.

:checked

Pseudo-class :checked digunakan untuk menargetkan elemen input yang dicentang (misalnya, <input type="checkbox"> atau <input type="radio">).

Contoh:

input[type="checkbox"]:checked + label { font-weight: bold; }

Kode ini akan membuat teks label yang terkait dengan kotak centang yang dicentang menjadi tebal.

:required

Pseudo-class :required digunakan untuk menargetkan elemen input yang diperlukan.

Contoh:

input:required { border-left: 5px solid red; }

Kode ini akan menambahkan border kiri berwarna merah pada elemen input yang wajib diisi.

:optional

Pseudo-class :optional digunakan untuk menargetkan elemen input yang tidak diperlukan.

Contoh:

input:optional { border-left: 5px solid green; }

Kode ini akan menambahkan border kiri berwarna hijau pada elemen input yang opsional.

:valid

Pseudo-class :valid digunakan untuk menargetkan elemen input yang isinya valid berdasarkan tipe input dan atribut yang ditentukan (misalnya, type="email", pattern).

Contoh:

input:valid { border-color: green; }

Kode ini akan mengubah warna border elemen input menjadi hijau jika isinya valid.

:invalid

Pseudo-class :invalid digunakan untuk menargetkan elemen input yang isinya tidak valid.

Contoh:

input:invalid { border-color: red; }

Kode ini akan mengubah warna border elemen input menjadi merah jika isinya tidak valid.

:in-range

Pseudo-class :in-range digunakan untuk menargetkan elemen input yang nilainya berada dalam rentang yang ditentukan (misalnya, <input type="number" min="0" max="100">).

Contoh:

input[type="number"]:in-range { border-color: green; }

Kode ini akan mengubah warna border elemen input bertipe number menjadi hijau jika nilainya berada dalam rentang yang ditentukan.

:out-of-range

Pseudo-class :out-of-range digunakan untuk menargetkan elemen input yang nilainya berada di luar rentang yang ditentukan.

Contoh:

input[type="number"]:out-of-range { border-color: red; }

Kode ini akan mengubah warna border elemen input bertipe number menjadi merah jika nilainya berada di luar rentang yang ditentukan.

:read-only

Pseudo-class :read-only digunakan untuk menargetkan elemen yang tidak dapat dimodifikasi oleh pengguna.

Contoh:

input:read-only { background-color: #eee; }

Kode ini akan mengubah warna latar belakang elemen input yang bersifat read-only menjadi abu-abu sangat muda.

:read-write

Pseudo-class :read-write digunakan untuk menargetkan elemen yang dapat dimodifikasi oleh pengguna.

Contoh:

input:read-write { border: 1px solid black; }

Kode ini akan memberikan border hitam pada elemen input yang dapat diubah.

:default

Pseudo-class :default digunakan untuk menargetkan elemen yang merupakan pilihan default dalam grup elemen (misalnya, tombol submit dalam form).

Contoh:

button:default { font-weight: bold; }

Kode ini akan membuat tombol default dalam form menjadi tebal.

:indeterminate

Pseudo-class :indeterminate digunakan untuk menargetkan elemen input yang berada dalam keadaan indeterminate (misalnya, kotak centang yang tidak dicentang maupun tidak kosong).

Contoh:

input[type="checkbox"]:indeterminate { border: 2px dotted blue; }

Kode ini akan menambahkan border biru putus-putus pada kotak centang yang berada dalam keadaan indeterminate.

:placeholder-shown

Pseudo-class :placeholder-shown digunakan untuk menargetkan elemen input yang menampilkan placeholder.

Contoh:

input:placeholder-shown { color: #999; }

Kode ini akan mengubah warna teks placeholder menjadi abu-abu gelap.

Pseudo-classes Struktur Pohon (Tree-Structural Pseudo-classes)

Pseudo-classes ini memungkinkan Anda memilih elemen berdasarkan posisinya dalam struktur dokumen (DOM).

:root

Pseudo-class :root mewakili elemen root dokumen. Dalam HTML, ini biasanya adalah elemen <html>. Ini sering digunakan untuk mendefinisikan variabel CSS global.

Contoh:

:root { --main-color: #007bff; }

Ini mendefinisikan variabel CSS bernama --main-color dengan nilai biru. Anda kemudian dapat menggunakannya di seluruh stylesheet Anda.

:nth-child() dengan Rumus

Anda dapat menggunakan rumus dalam :nth-child() untuk menargetkan elemen dengan pola yang lebih kompleks.

  • an + b: ‘a’ adalah ukuran siklus, ‘n’ adalah counter (dimulai dari 0), dan ‘b’ adalah offset awal.

Contoh:

li:nth-child(2n+1) { background-color: #f2f2f2; }

Kode ini akan memberikan warna latar belakang abu-abu muda ke semua item daftar ganjil.

li:nth-child(even) { background-color: #f2f2f2; }

Kode ini akan memberikan warna latar belakang abu-abu muda ke semua item daftar genap.

:nth-last-child()

Pseudo-class :nth-last-child(n) mirip dengan :nth-child(n), tetapi menghitung dari elemen terakhir.

Contoh:

li:nth-last-child(2) { color: orange; }

Kode ini akan mengubah warna teks pada item daftar kedua dari terakhir menjadi oranye.

:nth-of-type() dengan Rumus

Sama seperti :nth-child(), Anda dapat menggunakan rumus dengan :nth-of-type().

Contoh:

p:nth-of-type(3n) { font-weight: bold; }

Kode ini akan membuat teks setiap paragraf ketiga menjadi tebal.

:nth-last-of-type()

Pseudo-class :nth-last-of-type(n) mirip dengan :nth-of-type(n), tetapi menghitung dari elemen terakhir dari jenis tertentu.

Contoh:

p:nth-last-of-type(1) { margin-bottom: 0; }

Kode ini akan menghapus margin bawah paragraf terakhir.

Pseudo-classes UI (User Interface Pseudo-classes)

Pseudo-classes UI berhubungan dengan keadaan antarmuka pengguna.

  • Sudah dibahas di bagian “Pseudo-classes Umum dan Paling Sering Digunakan” (:enabled, :disabled, :checked, :valid, :invalid, :in-range, :out-of-range, :read-only, :read-write, :default, :indeterminate, :placeholder-shown).

:target Pseudo-class

Pseudo-class :target digunakan untuk menargetkan elemen yang ID-nya cocok dengan fragmen URL saat ini.

Contoh:

HTML:

<h2 id="section1">Section 1</h2>

CSS:

:target { border: 2px solid red; }

Jika URL-nya adalah http://example.com/#section1, maka elemen <h2 id="section1"> akan memiliki border merah.

Contoh Penggunaan Pseudo-classes dalam Proyek Nyata

  1. Membuat Tombol Interaktif:

    button { background-color: #4CAF50; /* Green */ border: none; color: white; padding: 15px 32px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; cursor: pointer; } button:hover { background-color: #3e8e41; } button:active { background-color: #3e8e41; box-shadow: 0 2px #666; transform: translateY(2px); }

  2. Menyoroti Item Daftar:

    li:hover { background-color: #f0f0f0; }

  3. Styling Form Input:

    input[type="text"]:focus { border: 2px solid #555; } input[type="text"]:invalid { border: 2px solid red; } input[type="text"]:valid { border: 2px solid green; }

  4. Membuat Tabel dengan Baris Bergaris:

    tr:nth-child(even) { background-color: #f2f2f2; }

Praktik Terbaik dalam Menggunakan Pseudo-classes

  • Konsistensi: Gunakan pseudo-classes secara konsisten di seluruh proyek Anda untuk memberikan pengalaman pengguna yang intuitif.
  • Aksesibilitas: Pastikan bahwa interaksi pseudo-classes juga dapat diakses oleh pengguna dengan disabilitas. Misalnya, gunakan :focus dengan gaya yang jelas untuk elemen interaktif yang dapat dinavigasi dengan keyboard.
  • Specificity: Perhatikan specificity CSS saat menggunakan pseudo-classes. Kadang-kadang, Anda mungkin perlu menggunakan specificity yang lebih tinggi untuk menimpa gaya default.
  • Performance: Hindari menggunakan pseudo-classes yang memicu repaint dan reflow yang sering, karena dapat mempengaruhi performa situs web Anda.
  • Test di berbagai browser: Uji kode Anda di berbagai browser untuk memastikan kompatibilitas. Meskipun sebagian besar pseudo-classes didukung secara luas, selalu ada perbedaan kecil antar browser.

Kesimpulan

Pseudo-classes CSS adalah alat yang ampuh untuk menambahkan interaktivitas dan gaya dinamis ke situs web Anda. Dengan memahami dan menggunakan berbagai pseudo-classes yang tersedia, Anda dapat menciptakan pengalaman pengguna yang lebih menarik dan intuitif. Cheat sheet ini menyediakan referensi lengkap untuk membantu Anda memulai. Teruslah bereksperimen dan mempraktikkan berbagai pseudo-classes untuk meningkatkan keterampilan CSS Anda.

“`

omcoding

Leave a Reply

Your email address will not be published. Required fields are marked *