Menu

Class Selector dan ID Selector CSS (.class dan #id)

Class selector (.nama) memberi style pada setiap elemen dengan class tersebut; ID selector (#nama) memberi style pada satu elemen dengan id tersebut. Pelajari sintaksnya, beberapa class dan class berantai, class vs id, aturan penamaan, dan mengganti class dengan JavaScript.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Class selector

Class selector adalah titik yang diikuti nama class. Selector ini memberi style pada setiap elemen yang atribut class-nya berisi nama tersebut, apa pun jenis elemennya.

Titik hanya muncul di CSS. Di HTML, atributnya adalah class="badge", tanpa titik. Nama class peka huruf besar kecil: .Badge tidak cocok dengan class="badge".

Beberapa class pada satu elemen

Sebuah elemen bisa membawa class sebanyak apa pun, dipisahkan spasi. Setiap class membawa aturannya sendiri, dan begitulah kamu membangun varian dari bagian-bagian kecil:

.btn.danger, tanpa spasi, cocok dengan elemen yang punya kedua class itu. Span terakhir punya danger tetapi tidak punya btn, jadi aturan berantai itu melewatinya.

Variasi class selector

SelectorCocok dengan
.noteElemen apa pun dengan class note
p.noteHanya elemen <p> dengan class note
.btn.primaryElemen yang punya btn sekaligus primary
.card .title.title di mana saja di dalam .card
.card > .title.title yang induknya .card
.a, .bElemen dengan a atau b

Perbedaan antara pakai spasi dan tanpa spasi dibahas bersama combinator lain di halaman selector CSS.

ID selector

ID selector adalah tanda pagar yang diikuti id: #site-header memberi style pada elemen dengan id="site-header". Sebuah id harus unik di halaman, jadi ID selector menargetkan tepat satu elemen.

Id berguna lebih dari sekadar style: href="#details" menggulir ke elemen itu, <label for="email"> menunjuk ke id sebuah input, dan JavaScript menemukannya dengan document.getElementById('details'). Itulah alasan umum memberi id pada elemen; untuk style, class adalah alat yang lebih tepat.

Class vs ID

Class .nameID #name
Per halamanBanyak elemenSatu elemen
Per elemenBeberapa, dipisahkan spasiSatu
Specificity(0,1,0)(1,0,0)
Target link (#name di URL)TidakYa
Paling cocok untukStyleAnchor, label, pengait JavaScript

Selisih specificity inilah alasan praktis untuk memberi style dengan class. Satu ID mengalahkan class sebanyak apa pun, jadi aturan yang ditulis dengan ID hanya bisa ditimpa oleh ID lain, inline style, atau !important:

Menambah dan menghapus class dengan JavaScript

Class adalah cara yang biasa bagi JavaScript untuk mengubah tampilan sesuatu: CSS menentukan state-nya, script hanya mengganti-gantinya.

classList juga punya add, remove, contains, dan replace. Hindari mengisi className secara langsung: cara itu mengganti semua class yang dimiliki elemen.

Memberi nama class

  • Huruf, angka, tanda hubung, dan garis bawah aman dipakai: card, card-title, card__title, is-open.
  • Jangan awali selector dengan angka atau tanda hubung yang diikuti angka. .2col adalah CSS yang tidak valid. Awali dengan huruf (.cols-2) atau escape angkanya (.\32 col).
  • Beri nama berdasarkan fungsi, bukan tampilan: .error bertahan saat desain diubah, .red-text tidak.
  • Konvensi penamaan membantu di proyek yang lebih besar. BEM menulis block__element--modifier, misalnya .card__title--large.

Kesalahan umum

  • Menaruh titik di HTML. class=".badge" tidak akan pernah cocok dengan .badge.
  • Dua atribut class. <p class="a" class="b"> hanya menyimpan a. Pakai class="a b".
  • Memakai spasi padahal maksudnya kedua class. .btn .primary mencari elemen bersarang; .btn.primary adalah elemen yang sama.
  • Memakai ulang sebuah id. Id ganda merusak getElementById, link anchor, dan hubungan label, meskipun CSS-nya tampak berfungsi.
  • Memberi style semuanya dengan id. Specificity-nya membuat penimpaan di kemudian hari jadi menyulitkan; pakai class.

Pertanyaan yang sering diajukan

Bagaimana cara memilih class di CSS?

Tulis titik diikuti nama class-nya: .card { ... } memberi style pada setiap elemen dengan class="card". Titik hanya ada di CSS; atribut HTML-nya tidak memakai titik.

Apa perbedaan class dan id di CSS?

Sebuah class bisa dipakai di elemen sebanyak apa pun dan satu elemen bisa punya beberapa class; sebuah id harus unik di halaman dan satu elemen paling banyak punya satu id. Di CSS, #id punya specificity yang jauh lebih tinggi dari .class, jadi aturan ID lebih sulit ditimpa.

Bagaimana cara memberi dua class pada satu elemen?

Pisahkan nama-namanya dengan spasi di satu atribut: class="btn primary". Menulis class dua kali pada satu elemen tidak berfungsi; browser hanya menyimpan atribut yang pertama.

Bagaimana cara memilih elemen yang punya dua class?

Rangkai class selector tanpa spasi: .btn.primary cocok dengan elemen yang punya kedua class itu. Dengan spasi, .btn .primary berarti elemen .primary yang berada di dalam elemen .btn.

Bolehkah nama class CSS diawali angka?

Di HTML boleh, tetapi selector tidak boleh diawali angka tanpa escape, jadi .1col adalah CSS yang tidak valid. Escape angkanya (.\31 col) atau, lebih baik lagi, awali nama class dengan huruf.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai