Apa itu spesifisitas selektor CSS dan bagaimana cara kerjanya?
Peramban menentukan gaya apa yang akan ditampilkan pada elemen tergantung pada spesifisitas aturan CSS. Kita asumsikan peramban telah menentukan aturan yang cocok dengan elemen tertentu. Di antara aturan yang cocok, spesifisitas, empat nilai yang dipisahkan koma, a, b, c, d
dihitung untuk setiap aturan berdasarkan hal berikut:
a
adalah apakah gaya sebaris (inline styles) sedang digunakan. Jika deklarasi properti adalah gaya sebaris pada elemen,a
adalah 1, selain itu 0.b
adalah jumlah selektor ID.c
adalah jumlah kelas, atribut, dan selektor pseudo-kelas.d
adalah jumlah tag dan selektor pseudo-elemen.
Spesifisitas yang dihasilkan bukanlah skor, melainkan matriks nilai yang dapat dibandingkan kolom demi kolom. Saat membandingkan selektor untuk menentukan mana yang memiliki spesifisitas tertinggi, lihat dari kiri ke kanan, dan bandingkan nilai tertinggi di setiap kolom. Jadi, nilai di kolom b
akan mengesampingkan nilai di kolom c
dan d
, apa pun nilainya. Dengan demikian, spesifisitas 0,1,0,0
akan lebih besar dari 0,0,10,10
.
Dalam kasus spesifisitas yang sama: aturan terbaru adalah yang dihitung. Jika Anda telah menulis aturan yang sama dalam stylesheet Anda (terlepas dari internal atau eksternal) dua kali, maka aturan yang lebih rendah dalam stylesheet Anda lebih dekat ke elemen yang akan diberi gaya, itu dianggap lebih spesifik dan oleh karena itu akan diterapkan.
Saya akan menulis aturan CSS dengan spesifisitas rendah sehingga dapat dengan mudah ditimpa jika perlu. Saat menulis kode pustaka komponen UI CSS, penting agar mereka memiliki spesifisitas rendah sehingga pengguna pustaka dapat menimpanya tanpa menggunakan aturan CSS yang terlalu rumit hanya demi meningkatkan spesifisitas atau menggunakan !important
.