CSS - Khusus

Selamat datang, sahabat sekolah, ke dalam perjalanan menarik kita ke dunia CSS Specificity! Sebagai guru komputer yang ramah di lingkungan sekitar Anda dengan tahun-tahun pengalaman, saya sangat gembira untuk mengantar Anda melalui konsep penting ini. Jangan khawatir jika Anda baru saja memulai pemrograman - kita akan mulai dari dasar dan naik tingkat perlahan-lahan. Jadi, ambil secangkir kopi (atau teh, jika itu hal Anda), dan mari kita masuk ke dalam!

CSS - Specificity

CSS Specificity - Kategori Bobot Pemilih

Bayangkan CSS specificity sebagai kontes popularitas antara pemilih. Setiap pemilih memiliki "bobot" atau kepentingannya sendiri, dan yang memiliki bobot tertinggi memenangkan hak untuk gayakan elemen. Itu seperti menjadi anak yang keren di sekolah - semakin keren Anda, semakin banyak pengaruh Anda!

Ada empat kategori utama bobot pemilih, dari tertinggi ke terendah:

  1. gaya inline
  2. ID
  3. Kelas, atribut, dan pseudokelas
  4. Elemen dan pseudoelemen

Mari kita lihat masing-masing dari ini secara detil.

CSS Specificity - Skor Setiap Tipe Pemilih

Untuk membuat hal ini mudah dipahami, kita dapat memberikan poin ke setiap tipe pemilih. Bayangkan ini sebagai permainan di mana setiap pemilih mendapat poin berdasarkan kepentingannya. Berikut adalah tabel praktis untuk diingat:

Tipe Pemilih Poin Contoh
Gaya inline 1000 <p style="color: red;">
ID 100 #header
Kelas, atribut, pseudokelas 10 .button, [type="text"], :hover
Elemen dan pseudoelemen 1 p, ::before

Sekarang, mari kita lihat ini dalam aksi dengan beberapa contoh kode:

/* Specificity: 1 */
p {
color: blue;
}

/* Specificity: 10 */
.text {
color: red;
}

/* Specificity: 100 */
#main-heading {
color: green;
}

Dalam contoh ini, jika kita memiliki elemen seperti <p id="main-heading" class="text">Hello, World!</p>, warna teks akan menjadi hijau karena pemilih ID memiliki specificity tertinggi.

CSS Specificity - Kasus Pengecualian

Sekarang, Anda mungkin berpikir, "Tapi, guru, ada pengecualian dari aturan ini?" Pertanyaan yang bagus! Ada indeed satu pengecualian utama: deklarasi !important.

Ketika Anda menambahkan !important ke properti, itu menjadi pemenang ultah, tanpa menghiraukan specificity. Itu seperti memiliki kartu "Keluar Dari Penjara" di Monopoli - gunakanlah itu bijaksana!

p {
color: blue !important;
}

#main-heading {
color: green;
}

Dalam kasus ini, meskipun pemilih ID memiliki specificity yang lebih tinggi, aturan !important pada pemilih p akan membuat teks menjadi biru.

CSS Specificity - Menangani Masalah

kadang-kadang, Anda mungkin menemukan diri Anda dalam masalah specificity. Jangan khawatir; hal itu terjadi kepada yang terbaik dari kita! Berikut adalah beberapa tips untuk menangani masalah specificity:

  1. Hindari menggunakan !important kecuali sangat diperlukan.
  2. Cobalah menggunakan kelas daripada ID jika memungkinkan.
  3. Berhati-hati terhadap struktur pemilih Anda dan cobalah untuk menjaga ke simpel.
  4. Gunakan kalkulator specificity jika Anda diragukan tentang bobot pemilih Anda.

CSS Specificity - Titik Penting untuk Diingat

Mari rangkum beberapa titik penting untuk diingat tentang CSS specificity:

  1. Specificity dihitung berdasarkan komponen pemilih.
  2. Gaya inline selalu memiliki specificity tertinggi (kecuali diatasi oleh !important).
  3. ID memiliki specificity yang lebih tinggi daripada kelas, yang memiliki specificity yang lebih tinggi daripada elemen.
  4. Semakin spesifik pemilih, semakin tinggi specificitynya.
  5. Ketika specificity sama, yang terakhir dalam CSS file menang.

CSS Specificity - Specificity Sama (Yang Terakhir Menang)

Ketika dua pemilih memiliki specificity yang sama, yang terakhir dalam file CSS menang. Itu seperti finish photo di lomba - yang melintasi garis terakhir mendapat hadiah!

.button {
background-color: blue;
}

.button {
background-color: red;
}

Dalam kasus ini, tombol akan berwarna merah karena itu adalah deklarasi terakhir.

CSS Specificity - Hierarchy Specificity (Gaya Inline)

Gaya inline adalah juara kelas berat dari specificity. Mereka memiliki specificity 1000, yang lebih tinggi daripada semua pemilih di style sheet Anda. Misalnya:

<p style="color: red;" class="blue-text" id="green-text">Warna saya apa?</p>
#green-text {
color: green;
}

.blue-text {
color: blue;
}

Dalam kasus ini, teks akan berwarna merah karena gaya inline mengalahkan pemilih ID dan kelas.

CSS Specificity - Hierarchy Specificity (Deklarasi ID)

Setelah gaya inline, pemilih ID adalah yang paling kuat. Mereka memiliki specificity 100, yang mengalahkan kelas dan elemen. mari lihat contoh:

<p id="special-paragraph" class="normal-text">Saya adalah paragraf khusus!</p>
#special-paragraph {
color: purple;
}

.normal-text {
color: black;
}

p {
color: blue;
}

Di sini, teks akan berwarna ungu karena pemilih ID memiliki specificity tertinggi antara aturan CSS.

CSS Specificity - Hierarchy Specificity (Deklarasi Kelas)

Pemilih kelas menduduki tempat berikutnya dalam hierarki, dengan specificity 10. Mereka lebih spesifik daripada pemilih elemen tetapi kurang spesifik daripada ID. Misalnya:

<p class="highlight">Ini adalah paragraf yang ditekan.</p>
.highlight {
background-color: yellow;
}

p {
background-color: white;
}

Dalam contoh ini, paragraf akan memiliki latar belakang kuning karena pemilih kelas memiliki specificity yang lebih tinggi daripada pemilih elemen.

CSS Specificity - Hierarchy Specificity (Dengan Aturan !important)

Akhirnya, mari bicarakan tentang opsi nuklir: !important. Deklarasi ini mengalahkan semua deklarasi lain, tanpa menghiraukan specificity. Itu seperti memiliki "kartu trump" di deck CSS Anda.

p {
color: blue !important;
}

#special-paragraph {
color: red;
}

.highlight {
color: green;
}

Jika kita menerapkan gaya ini ke paragraf, itu akan menjadi biru, bahkan jika itu memiliki ID special-paragraph atau kelas highlight, karena aturan !important.

Dan itu adalah dia, teman-teman! Kita telah melihat segala hal tentang CSS specificity. Ingat, dengan specificity yang besar datang tanggung jawab besar. Gunakan pengetahuan baru Anda bijaksana, dan semoga gaya Anda selalu spesifik dan pemilih Anda selalu jelas!

Credits: Image by storyset