selektorkombinatoratributspesifikPemula6 mnt baca

Selektor Lanjutan: Kombinator dan Atribut

Naik level: selektor keturunan, child, sibling, dan selektor atribut buat menargetkan elemen dengan presisi bedah.

Kenapa selektor dasar kadang kurang?

Bayangkan kamu mau men-style link yang ada di dalam navbar saja, bukan semua link di halaman. Selektor class bisa, tapi kadang struktur HTML-nya sudah jelas dan kamu tidak mau menambah class baru. Di sinilah kombinator berperan: simbol yang menjelaskan hubungan antar elemen.

Kombinator keturunan (spasi)

css
nav a {
  color: white;
}

Targetnya: semua <a> yang berada di dalam <nav>, sedalam apa pun. Ini kombinator yang paling sering dipakai.

Kombinator child (>)

css
ul > li {
  list-style: none;
}

Targetnya: <li> yang merupakan anak langsung dari <ul>. Kalau ada <li> bersarang di dalam <li> lain, yang bersarang itu tidak kena. Lebih ketat dari keturunan.

Kombinator sibling

Ada dua jenis. Adjacent sibling + menargetkan saudara yang tepat setelahnya:

css
h2 + p {
  margin-top: 0;
}

Paragraf yang langsung muncul setelah h2 tidak punya margin atas. Berguna buat mengatur ritme teks artikel.

General sibling ~ menargetkan semua saudara setelahnya:

css
h2 ~ p {
  color: #444;
}

Semua paragraf setelah h2 (dalam induk yang sama) kena, tidak harus langsung menempel.

Selektor atribut

Menargetkan elemen berdasarkan atributnya, tanpa perlu class.

css
/* semua input yang tipenya text */
input[type="text"] {
  border: 1px solid #ccc;
}

/* semua link yang href-nya diawali https */
a[href^="https"] {
  color: green;
}

/* semua gambar yang src-nya diakhiri .svg */
img[src$=".svg"] {
  width: 24px;
}

Operator yang berguna: = (persis sama), ^= (diawali), $= (diakhiri), *= (mengandung).

Contoh gabungan dunia nyata

css
/* tombol di dalam form login saja */
form.login button[type="submit"] {
  background: royalblue;
  color: white;
}

Tiga selektor digabung: elemen form dengan class login, lalu keturunannya button yang atribut type-nya submit. Presisi tanpa menambah class di HTML.

Catatan teknis: jangan berlebihan memakai kombinator yang terlalu panjang seperti div > div > div > p. Itu rapuh: sedikit perubahan struktur HTML langsung merusak style. Kalau rantainya lebih dari 3 level, lebih baik tambahkan class di HTML.

Rangkuman

Kombinator menjelaskan hubungan: spasi (keturunan), > (anak langsung), + (saudara tepat setelah), ~ (semua saudara setelah). Selektor atribut menargetkan lewat atribut seperti type dan href. Pakai secukupnya, jangan bikin rantai selektor sepanjang kereta.