CSS Variables — CSS

Coba kamu lagi rebrand website dari biru ke hijau. Tanpa variable: cari-temuin 50 tempat warna biru di-hardcode di stylesheet, ubah satu-satu, pasti ada yang…

CSS variable (nama resminya custom property) adalah nilai yang kamu simpan sekali dengan sebuah nama, lalu kamu pakai di banyak tempat. Ganti nilainya di satu tempat, semua yang memakainya ikut berubah. Kayak kontak di HP: kamu nelpon lewat nama, nomornya cukup disimpan sekali.

Bikin variabel, lalu pakai

<h1>Judul</h1>
<button class="tombol">Daftar</button>

<style>
:root {
  --primary: blue;
  --radius: 8px;
}

h1 {
  color: var(--primary);
}

.tombol {
  background: var(--primary);
  border-radius: var(--radius);
}
</style>

Hasilnya, judul biru dan tombol biru dengan sudut 8px. Ganti --primary jadi green di :root, judul dan tombolnya langsung hijau dua-duanya, tanpa menyentuh aturan h1 dan .tombol.

Jadi ada dua langkah: simpan di :root dengan --nama: nilai;, lalu pakai dengan var(--nama). Kalau nilainya diketik ulang di tempat lain, misalnya color: blue;, variabelnya gak dipakai, dan nanti gak ikut berubah.

Nilai cadangan

.tombol {
  background: var(--aksen, gray);
}

Isi kedua di dalam var() adalah nilai cadangan. Kalau --aksen belum pernah dibuat, browser memakai gray. Kalau --aksen ada, cadangannya diabaikan.

Variabel khusus satu bagian

.promo {
  --primary: orange;
}

Variabel juga bisa dibuat di selector lain, bukan cuma :root. Di dalam .promo, var(--primary) jadi orange. Di luar .promo, nilainya tetap blue dari :root. Yang paling dekat dengan elemennya yang menang.

⚠️ Jebakan yang sering ketemu

💡 Bisa diubah JavaScript. Variabel CSS hidup di browser, jadi JavaScript bisa menggantinya saat halaman sedang jalan, misalnya document.documentElement.style.setProperty('--primary', 'red'). Itu cara gampang bikin tombol mode gelap.

🔬 Coba sendiri

Ganti nilai variabelnya dan lihat semua yang memakainya ikut berubah.

TL;DR: Simpan nilai sekali di :root dengan --nama: nilai; (dua tanda hubung di depan), lalu pakai di mana saja dengan var(--nama). Ganti nilainya di satu tempat, semua ikut berubah. var(--nama, cadangan) memakai cadangan kalau variabelnya belum ada. Variabel yang dibuat di selector lain, misalnya .promo, cuma berlaku di dalamnya.

Yang akan kamu pelajari