Jangan menganggap kelas css sebagai kelas berorientasi objek, anggaplah mereka hanya sebagai alat di antara penyeleksi lainnya untuk menentukan kelas atribut mana yang ditata oleh elemen html. Pikirkan segala sesuatu di antara kawat gigi sebagai kelas atribut , dan penyeleksi di sebelah kiri memberi tahu elemen yang mereka pilih untuk mewarisi atribut dari kelas atribut . Contoh:
.foo, .bar { font-weight : bold; font-size : 2em; /* attribute class A */}
.foo { color : green; /* attribute class B */}
Ketika unsur diberikan atribut class="foo"
, hal ini berguna untuk memikirkan itu tidak mewarisi atribut dari kelas .foo
, tapi dari atribut kelas A dan kelas atribut B . Yaitu, grafik warisan adalah satu tingkat dalam, dengan elemen yang berasal dari kelas atribut , dan penyeleksi menentukan kemana tepi pergi, dan menentukan prioritas ketika ada atribut yang bersaing (mirip dengan urutan resolusi metode).
Implikasi praktis untuk pemrograman adalah ini. Katakanlah Anda memiliki style sheet yang diberikan di atas, dan ingin menambahkan kelas baru .baz
, di mana ia harus sama font-size
dengan .foo
. Solusi naif adalah:
.foo, .bar { font-weight : bold; font-size : 2em; /* attribute class A */}
.foo { color : green; /* attribute class B */}
.baz { font-size : 2em; /* attribute class C, hidden dependency! */}
Setiap kali saya harus mengetik sesuatu dua kali, saya menjadi sangat marah! Saya tidak hanya harus menulisnya dua kali, tetapi sekarang saya tidak memiliki cara untuk menunjukkan secara terprogram .foo
dan .baz
seharusnya memiliki yang sama font-size
, dan saya telah menciptakan ketergantungan tersembunyi! Paradigma saya di atas akan menyarankan bahwa saya harus abstrak font-size
atribut dari atribut class A :
.foo, .bar, .baz { font-size : 2em; /* attribute base class for A */}
.foo, .bar { font-weight : bold; /* attribute class A */}
.foo { color : green; /* attribute class B */}
Keluhan utama di sini adalah bahwa sekarang aku harus mengetik ulang setiap pemilih dari atribut kelas A lagi untuk menentukan bahwa unsur-unsur mereka harus memilih harus atribut juga mewarisi dari kelas dasar atribut A . Namun, alternatif harus diingat untuk mengedit setiap kelas atribut di mana ada dependensi tersembunyi setiap kali ada perubahan, atau menggunakan alat pihak ketiga. Opsi pertama membuat tawa tertawa, yang kedua membuat saya ingin bunuh diri.