1655 kata
8 menit

Mengenal Selector, Property, dan Value CSS

Di artikel sebelumnya kita sudah berhasil membuat CSS bekerja.

Kita menulis sesuatu seperti:

body {
background-color: #f4f4f4;
}

Lalu:

header {
background-color: #2563eb;
color: white;
}

Dan bahkan:

nav a {
color: white;
text-decoration: none;
}

Kita menulisnya.

Browser menurut.

Lumayan. 😄

Tapi ada satu hal yang sengaja belum kita bongkar.

Kenapa:

body

mengubah <body>?

Kenapa:

header

mengubah <header>?

Dan kenapa:

nav a

tidak mengubah semua link di halaman?

Kalau kita ingin mengubah satu jenis elemen tertentu, bagaimana?

Kalau kita ingin beberapa elemen yang berbeda memiliki tampilan yang sama?

Nah.

Sekarang waktunya kita memahami apa sebenarnya yang kita tulis di file CSS.

Kalau Gabuters belum mengikuti bagian sebelumnya, mulai dulu dari CSS Itu Apa? Yuk Percantik Halaman HTML Kita.

Kita akan melanjutkan project yang sama.

Bedah Satu Aturan CSS#

Ambil CSS yang sudah pernah kita gunakan:

h1 {
color: #ffffff;
}

Sekarang kita bedah.

Struktur dasarnya:

selector {
property: value;
}

Pada contoh kita:

h1
↓
selector
color
↓
property
#ffffff
↓
value

Jadi kalau dibaca dengan bahasa manusia:

Pilih elemen h1, lalu atur warna teksnya menjadi #ffffff.

Tidak seseram tampilannya, kan?

Bagian di antara { dan } disebut declaration block. Di dalamnya kita menuliskan aturan tampilan yang ingin diterapkan pada elemen yang cocok dengan selector.

Mari kita kenal satu per satu.

Selector: Elemen Mana yang Mau Kita Atur?#

Bagian pertama adalah:

h1

Ini disebut selector.

Selector digunakan untuk menentukan elemen HTML mana yang ingin terkena aturan CSS.

Misalnya:

p {
color: #333333;
}

Artinya:

Pilih elemen <p>.

Kalau halaman kita memiliki lima <p>, aturan tersebut bisa berlaku pada kelimanya.

Contoh lain:

footer {
text-align: center;
}

Selector-nya adalah:

footer

Jadi CSS menargetkan elemen <footer>.

Cara seperti ini disebut type selector atau sering juga disebut element selector.

Untuk pembelajaran kita, istilah “element selector” cukup mudah diingat.

Property: Apa yang Mau Diatur?#

Sekarang lihat:

p {
color: #333333;
}

Bagian:

color

disebut property.

Property menentukan aspek apa yang ingin kita atur.

Misalnya:

color
background-color
font-family
font-size
text-align

Kita sebenarnya sudah menggunakan beberapa property tersebut di CSS #1.

Waktu itu kita hanya belum memberi namanya.

Jadi:

color: #333333;

bisa kita baca:

Atur property color.

Lalu pertanyaan berikutnya:

Menjadi apa?

Jawabannya ada pada value.

Value: Mau Diatur Menjadi Apa?#

Pada:

color: #333333;

bagian:

#333333

adalah value.

Value adalah nilai yang kita berikan kepada property.

Contoh:

font-size: 18px;

Di sini:

font-size
↓
property
18px
↓
value

Contoh lain:

text-align: center;

text-align adalah property.

center adalah value.

Jadi pola yang mulai perlu kita kenali adalah:

selector {
property: value;
}

Satu Selector Bisa Punya Banyak Declaration#

Kita tidak perlu membuat selector baru untuk setiap property.

Misalnya:

body {
background-color: #f4f4f4;
color: #333333;
font-family: Arial, sans-serif;
}

Selector-nya tetap:

body

Tetapi kita memberi beberapa pasangan property dan value.

Setiap pasangan seperti:

color: #333333;

disebut declaration.

Jadi secara sederhana:

body → selector
color → property
#333333 → value
color: #333333; → declaration

Semua declaration tadi berada di dalam declaration block yang dibatasi oleh { dan }.

Tidak perlu menghafal istilahnya sambil komat-kamit. 😄

Yang penting ketika membaca CSS, kita mulai tahu bagian mana melakukan apa.

Masalah dengan Element Selector#

Sekarang kita mulai menemukan keterbatasan.

Di halaman profil kita ada beberapa paragraf. Di antaranya adalah tagline di dalam header:

<p>
Ngoding, main game, dan ngulik apa saja.
</p>

Ada juga paragraf perkenalan di bagian Tentang Saya:

<p>
Halo! Saya BapakGabut.
Saat ini saya sedang belajar membuat website
menggunakan HTML.
</p>

Lalu kita menulis:

p {
font-size: 18px;
}

Apa yang terjadi?

Semua <p> yang cocok dengan selector tersebut akan mendapat aturan yang sama.

Padahal mungkin kita hanya ingin tagline:

Ngoding, main game, dan ngulik apa saja.

yang dibuat sedikit lebih besar.

Kita butuh cara untuk mengatakan:

Yang ini saja.

Salah satu caranya adalah menggunakan class.

Mengenal Class#

Buka kembali index.html milik Gabuters.

Kita bisa memberi atribut class pada paragraf tagline:

<p class="tagline">
Ngoding, main game, dan ngulik apa saja.
</p>

Sekarang elemen tersebut memiliki class:

tagline

Di style.css, class dipilih menggunakan tanda titik:

.tagline {
font-size: 18px;
}

Perhatikan:

HTML
class="tagline"
CSS
.tagline

Tanda:

.

di depan tagline memberi tahu CSS bahwa kita sedang memilih class.

Sekarang paragraf lain tidak perlu ikut menjadi 18px hanya karena sama-sama menggunakan <p>.

Kita sudah memiliki target yang lebih spesifik untuk kebutuhan styling kita.

Class Bisa Dipakai Lebih dari Sekali#

Class bukan nama yang hanya boleh digunakan satu kali.

Di bagian Link Favorit pada project kita ada link menuju BapakGabut dan GitHub. Kalau keduanya ingin diberi tampilan serupa, kita bisa mengubah HTML-nya menjadi:

<li>
<a
class="link-favorit"
href="https://www.bapakgabut.com"
>
BapakGabut
</a>
</li>
<li>
<a
class="link-favorit"
href="https://github.com"
>
GitHub
</a>
</li>

Kemudian di style.css:

.link-favorit {
color: #2563eb;
}

Kedua elemen menggunakan class yang sama.

Keduanya mendapatkan aturan yang sama.

Inilah salah satu alasan class sangat berguna untuk styling:

satu class
↓
bisa digunakan banyak elemen
↓
style dapat digunakan ulang

Satu Elemen Juga Bisa Punya Beberapa Class#

Tidak hanya satu class bisa dipakai banyak elemen.

Satu elemen juga bisa memiliki beberapa class.

Misalnya:

<p class="tagline teks-besar">
Ngoding, main game, dan ngulik apa saja.
</p>

Artinya elemen tersebut memiliki dua class:

tagline
teks-besar

Nama class pada atribut class dipisahkan dengan spasi.

Kita bisa memiliki:

.tagline {
color: #e5e7eb;
}
.teks-besar {
font-size: 18px;
}

Paragraf tersebut cocok dengan kedua selector.

Jadi ia bisa menerima aturan dari keduanya.

Warna #e5e7eb di sini tetap terlihat terang karena tagline project kita berada di dalam header biru.

Kita belum akan membahas apa yang terjadi kalau dua aturan mengatur property yang sama dengan nilai berbeda.

Itu berkaitan dengan cara CSS menentukan aturan mana yang digunakan.

Nanti kita bahas ketika memang diperlukan.

Untuk sekarang cukup pahami bahwa sebuah elemen bisa memiliki lebih dari satu class.

Lalu Bagaimana dengan ID?#

Gabuters sebenarnya sudah mengenal id sejak Series HTML.

Di project kita ada fragment navigation yang menggunakan pola seperti:

<section id="tentang">

dan link:

<a href="#tentang">Tentang</a>

id membantu mengidentifikasi satu elemen unik dalam dokumen.

Artinya, dalam satu halaman kita tidak membuat beberapa elemen berbeda dengan id="tentang" yang sama.

CSS juga bisa memilih elemen berdasarkan id.

Caranya menggunakan:

#

Contoh:

#tentang {
background-color: white;
}

Bandingkan:

.tagline
↓
class selector
#tentang
↓
ID selector

Keduanya valid dalam CSS.

Tetapi ada perbedaan penting.

id digunakan untuk mengidentifikasi satu elemen unik dalam dokumen.

Sedangkan class dapat digunakan pada banyak elemen.

Karena itu untuk styling yang ingin kita gunakan ulang, class biasanya lebih fleksibel.

Class atau ID?#

Untuk pemula, kita bisa memakai pertanyaan sederhana.

Kalau kita ingin membuat gaya yang mungkin digunakan pada beberapa elemen:

class="..."

biasanya menjadi pilihan yang masuk akal.

Misalnya:

<p class="teks-muted">...</p>
<span class="teks-muted">...</span>

Kemudian:

.teks-muted {
color: #666666;
}

Kalau elemen sudah memiliki id karena memang perlu diidentifikasi secara unik:

<section id="tentang">

CSS tetap boleh memilihnya:

#tentang {
background-color: white;
}

Jadi jangan berpikir:

class = benar
id = salah

Bukan begitu.

Keduanya memiliki fungsi dan karakteristik yang berbeda.

Untuk styling yang reusable, kita akan lebih sering menggunakan class.

Sekarang Kita Perbaiki Halaman Profil#

Mari gunakan pengetahuan tadi pada project kita.

Pertama, buka index.html, lalu tambahkan class pada tagline di dalam <header>:

<p class="tagline">
Ngoding, main game, dan ngulik apa saja.
</p>

Kemudian tambahkan ke style.css:

.tagline {
font-size: 18px;
color: #e5e7eb;
}

Simpan kedua file, lalu refresh browser.

Sekarang kita bisa mengatur tagline tanpa mengubah semua <p> di halaman.

Kalau tadi menambahkan class pada dua link favorit, kita juga bisa mempertahankan aturan:

.link-favorit {
color: #2563eb;
}

Tujuannya belum membuat desain final.

Kita sedang melihat bagaimana class memberi target yang masuk akal untuk aturan yang ingin digunakan pada elemen tertentu atau dipakai ulang.

Kita Sudah Pernah Menggunakan Selector yang Sedikit Berbeda#

Sekarang kembali ke CSS #1.

Kita pernah menulis:

nav a {
color: white;
text-decoration: none;
}

Ini menarik.

Kenapa tidak hanya:

a {
color: white;
}

Karena kalau kita menggunakan:

a

kita menargetkan semua link yang cocok di seluruh halaman.

Padahal waktu itu kita hanya ingin mengatur link yang berada di dalam navigasi pada header biru.

Dengan:

nav a

kita menyatakan secara sederhana:

Pilih elemen <a> yang berada di dalam <nav>.

Secara teknis ini disebut descendant selector.

Untuk sekarang tidak perlu menghafal istilahnya. Cukup pahami cara membacanya.

Selector tidak selalu hanya satu kata. Ia bisa membantu kita mempersempit elemen yang ingin ditargetkan berdasarkan konteksnya.

Beberapa Selector Bisa Berbagi Aturan#

Misalnya kita ingin <h2> dan <h3> memiliki warna yang sama.

Kita bisa menulis:

h2 {
color: #1f2937;
}
h3 {
color: #1f2937;
}

Valid.

Tetapi CSS juga memungkinkan kita mengelompokkan selector:

h2,
h3 {
color: #1f2937;
}

Tanda koma membentuk daftar selector yang berbagi declaration block yang sama.

Baca seperti:

Pilih h2 dan h3, lalu gunakan aturan ini.

Jangan tertukar dengan:

nav a

Karena:

h2,
h3

dan:

nav a

memiliki arti berbeda.

Yang pertama mengelompokkan selector.

Yang kedua memilih elemen berdasarkan konteks keberadaannya.

Coba Baca CSS Ini Tanpa Bantuan#

Sekarang coba lihat:

.tagline {
font-size: 18px;
color: #e5e7eb;
}

Kita sudah bisa membacanya:

.tagline
↓
pilih elemen dengan class "tagline"
font-size
↓
atur ukuran font
18px
↓
nilainya
color
↓
atur warna teks
#e5e7eb
↓
nilainya

Sekarang:

nav a {
color: white;
}

Kita juga mulai bisa membacanya:

Pilih link yang berada di dalam navigasi, lalu ubah warna teksnya menjadi putih.

Ini jauh lebih penting daripada menghafal puluhan property.

Kalau kita bisa membaca CSS, mempelajari property baru nanti jauh lebih mudah.

Coba Eksperimen#

Sekarang waktunya sedikit mengacak-acak project lagi. 😄

Coba tambahkan class:

class="sorot"

pada salah satu elemen yang masuk akal.

Lalu tambahkan ke style.css:

.sorot {
color: tomato;
}

Simpan dan refresh.

Pindahkan class tersebut ke elemen lain.

Lihat apa yang terjadi.

Kemudian coba gunakan class yang sama pada dua elemen.

Tujuannya adalah melihat hubungan:

class di HTML
↓
class selector di CSS
↓
elemen yang cocok mendapat aturan

Setelah selesai bereksperimen, Gabuters bebas menghapus class latihan tersebut.

Kita belum sedang mengejar desain final.

Kita sedang memahami cara CSS menemukan targetnya.

Kalau Style Tidak Muncul, Cek Selector-nya#

Di CSS #1 kita sudah mengecek apakah file CSS berhasil terhubung.

Sekarang ada jenis kesalahan baru.

File CSS sudah dimuat, tetapi satu aturan tertentu tidak bekerja.

Misalnya HTML:

<p class="tagline">
Ngoding, main game, dan ngulik apa saja.
</p>

Tetapi CSS:

.tag-line {
font-size: 18px;
}

Perhatikan:

tagline
tag-line

Itu dua nama berbeda.

CSS tidak akan menebak maksud kita.

Begitu juga kalau kita menulis:

tagline {
font-size: 18px;
}

Tanpa titik, CSS tidak membacanya sebagai class selector.

Bandingkan:

p
↓
element selector
.tagline
↓
class selector
#tentang
↓
ID selector

Satu karakter kecil bisa mengubah arti selector.

Kalau aturan belum bekerja, periksa:

  • apakah nama class di HTML dan CSS sama persis;
  • apakah tanda . untuk class atau # untuk ID sudah benar;
  • apakah kurung kurawal, titik dua, dan titik koma sudah berada di tempatnya;
  • apakah file sudah disimpan sebelum browser di-refresh.

Hal-hal kecil seperti ini akan terasa semakin natural setelah kita sering menulis CSS.

Apa yang Sudah Kita Pelajari?#

Sekarang CSS kita tidak lagi terlihat seperti sekumpulan simbol misterius.

Kita sudah mengenal pola:

selector {
property: value;
}

Kita juga sudah mencoba beberapa cara memilih elemen:

p {
/* ... */
}

Element selector.

.tagline {
/* ... */
}

Class selector.

#tentang {
/* ... */
}

ID selector.

Dan:

nav a {
/* ... */
}

Selector yang memilih link berdasarkan konteksnya di dalam navigasi.

Kita juga melihat bahwa selector tidak terbatas pada empat bentuk tersebut. CSS memiliki cara lain untuk memilih elemen, tetapi kita belum membutuhkannya sekarang.

Yang paling penting, ketika melihat CSS kita sudah mulai bisa bertanya:

Elemen mana yang dipilih?
↓
Apa yang diatur?
↓
Nilainya apa?

Itu adalah fondasi yang akan terus kita gunakan.

Selanjutnya: Kenapa Jarak dan Ukuran Elemen Kadang Terasa Aneh?#

Di CSS #1 kita sempat menggunakan:

padding: 20px;

dan saya sengaja bilang:

Nanti kita bahas.

Nah.

Waktunya hampir tiba. 😄

Sebuah elemen di browser bukan hanya “teks di layar”.

Ia memiliki area content, padding, border, dan margin.

Cara browser memperlakukan bagian-bagian tersebut dikenal sebagai:

CSS Box Model.

Di artikel berikutnya kita akan membongkar:

margin
border
padding
content

dan melihat kenapa memahami empat hal itu membuat mengatur ukuran dan jarak halaman jauh lebih masuk akal.

CSS

Selesai

Bagian 2 dari 6Tulisan ini bagian dari seri

Bagikan Artikel

Buat poster berbagi atau salin tautan artikel ini.

Lanjut membaca

Bacaan terkait

Berdasarkan tag dan kategori yang sama

Coba jalur lain

Pilihan konsisten dari artikel lain