Pseudo-elements — CSS

Pengen tambah dekorasi quote besar di awal blockquote tanpa nambahin tag baru di HTML? Pengen huruf pertama paragraf jadi gede ala buku cerita anak (drop…

Kadang kamu mau menambah hiasan kecil di sebuah elemen, misalnya tulisan "Baru" di depan judul atau tanda panah di belakang link, tanpa mengubah HTML-nya. Bayangin menempel stiker di sampul buku: bukunya gak berubah, tapi tampilannya nambah. Pseudo-element adalah stiker itu: bagian tambahan dari sebuah elemen yang dibikin dan diberi gaya lewat CSS, ditulis pakai dua titik dua, misalnya h2::before.

🧪 Tebakan cepat: p::before { color: red; }. Apa yang muncul di depan paragrafnya? Tebak dulu, jawabannya ada di bagian "Tempel teks di depan judul".

Tempel teks di depan judul

<h2>Fitur Kelas</h2>

<style>
h2::before {
  content: "Baru ";
  color: blue;
}
</style>

Hasilnya, judulnya terbaca "Baru Fitur Kelas", dengan "Baru" berwarna biru. HTML-nya tetap cuma <h2>Fitur Kelas</h2>.

content wajib ada di ::before dan ::after. Tanpa content, stikernya gak dibuat sama sekali, walau gaya lainnya sudah ditulis. Itu jawaban tebakannya: gak ada apa-apa yang muncul. Mau stiker tanpa teks, misalnya garis hiasan? Tulis content: "";. Teksnya juga harus di dalam tanda kutip: content: "Baru";, bukan content: Baru;.

Pseudo-element yang sering dipakai

::first-letter dan ::first-line menggaya teks yang sudah ada, jadi gak butuh content.

Satu titik dua atau dua?

Pseudo-class, kayak a:hover, ditulis dengan satu titik dua dan bicara soal keadaan seluruh elemen: link yang lagi di-hover. Pseudo-element, kayak a::before, ditulis dengan dua titik dua dan bicara soal bagian dari elemen: stiker di depan isi link.

Browser masih menerima :before dengan satu titik dua demi kode lama, tapi penulisan yang benar ::before. Bentuk lain, kayak :before:, @before, atau #before, gak dikenal.

⚠️ Jebakan yang sering ketemu

TL;DR: Pseudo-element adalah bagian tambahan dari elemen yang dibikin lewat CSS, ditulis pakai dua titik dua (::). ::before menempel isi di awal, ::after di akhir, dan keduanya wajib punya content dengan teks di dalam tanda kutip (boleh ""). ::first-letter dan ::first-line menggaya teks yang sudah ada. Satu titik dua itu pseudo-class (keadaan), dua titik dua itu pseudo-element (bagian).

Yang akan kamu pelajari