- Bab 2 dari 7
- 30 menit
- 1 latihan kode
- 4 soal kuis
Peta Koneksi dan Menghubungkan HTML ke CSS
Di bab ini (8 bagian)
Tujuan bab ini
- Membaca peta koneksi: siapa memanggil siapa antara HTML, CSS, dan JavaScript.
- Membandingkan tiga cara menyisipkan CSS dan memahami urutan prioritasnya dengan benar.
- Menulis
<link rel="stylesheet">dengan path relatif dan absolut yang tepat. - Mendiagnosis kenapa sebuah aturan CSS tidak ter-apply.
Peta koneksi: siapa memanggil siapa
Baca tabel ini dari baris (pemanggil) ke kolom (yang dipanggil):
| Dari \ Ke | HTML | CSS | JavaScript |
|---|---|---|---|
| HTML | - | <link rel="stylesheet"> atau <style> | <script src> atau <script>...</script> |
| CSS | selector: tag, .class, #id, [atribut] | @import, variabel --warna | tidak ada |
| JavaScript | DOM API: querySelector, createElement, append | el.style, classList | import / export |
Dua hal yang perlu kamu tangkap dari peta ini:
- HTML adalah titik awal. Browser selalu membuka file HTML dulu. Dari situlah ia tahu file CSS dan JS mana yang harus diunduh.
- Arahnya tidak simetris. CSS tidak pernah memanggil JavaScript. CSS hanya bisa "menunjuk" elemen HTML lewat selector. Sebaliknya, JavaScript bisa menjangkau HTML (lewat DOM) dan CSS (lewat class atau style). Karena itu, setiap kali halaman perlu berubah setelah dimuat, JavaScript-lah yang turun tangan.
Bab ini membahas koneksi pertama: HTML ke CSS.
Tiga cara menyisipkan CSS
1. Inline, lewat atribut style di elemen:
Paragraf itu jadi merah dan berukuran 20px. Gayanya menempel di satu elemen saja. Mau dipakai di paragraf lain? Harus disalin. Mau ganti merah jadi biru di seluruh situs? Cari satu per satu. Hindari untuk proyek sungguhan.
2. Internal, lewat tag <style> di <head>:
Semua <p> di halaman itu jadi merah. Lumayan untuk prototipe atau halaman tunggal, tapi tidak bisa dipakai bersama oleh halaman lain.
3. External, lewat file .css dan tag <link>:
Satu file gaya bisa dipakai puluhan halaman. Browser juga menyimpannya di cache, jadi saat pindah halaman file itu tidak perlu diunduh ulang. Ini standar industri.
Urutan prioritas saat bentrok
Kalau dua aturan mengatur properti yang sama pada elemen yang sama, siapa yang menang? Urutannya:
- Deklarasi dengan
!importantmengalahkan semuanya (pakai sangat jarang). - Inline style mengalahkan aturan dari
<style>maupun file eksternal. - Antara
<style>dan file eksternal, tidak ada yang otomatis lebih kuat. Browser membandingkan specificity selector dulu (#idlebih kuat dari.class,.classlebih kuat dari nama tag). - Kalau specificity sama, yang ditulis paling akhir menang.
Sering ada yang bilang "internal mengalahkan external". Itu hanya kelihatan benar karena <style> biasanya ditulis setelah <link>. Coba balik urutannya:
Paragraf akan biru, karena aturan dari file eksternal dibaca belakangan dan specificity-nya sama. Detail cascade lengkap ada di kelas HTML5 dan CSS3.
Tag <link> dan path file
Penyebab nomor satu "CSS saya tidak jalan" adalah path yang salah. Misalkan struktur foldernya begini:
Path relatif dihitung dari lokasi file HTML yang sedang dibuka, bukan dari folder proyek.
| Ditulis di | href | Artinya |
|---|---|---|
index.html | css/style.css atau ./css/style.css | Masuk folder css yang sejajar dengan index.html |
halaman/tentang.html | ../css/style.css | Naik satu folder dulu (..), baru masuk css |
| di mana saja | /css/style.css | Dihitung dari akar situs (root domain) |
./ artinya "folder saat ini", jadi ./css/style.css sama dengan css/style.css. ../ artinya "folder induk". Path yang diawali / disebut absolut terhadap root situs: dari halaman mana pun, /css/style.css selalu menunjuk ke domainmu.com/css/style.css.
Hati-hati dengan path /... kalau kamu membuka HTML langsung dengan dobel klik (alamatnya file:///...). Di mode itu, "root" adalah root hard disk, bukan folder proyek, sehingga CSS-nya tidak ketemu. Pakai server lokal (misalnya ekstensi Live Server) atau path relatif.
Tiga syarat agar <link> bekerja:
- Ada
rel="stylesheet". Tanpa itu, browser tidak menganggap file tersebut sebagai gaya. - Path benar, termasuk huruf besar kecil. Laptop Windows atau macOS biasanya tidak mempermasalahkan
Style.cssvsstyle.css, tapi server Linux (tempat kebanyakan situs di-deploy) membedakannya. Hasilnya: jalan di laptop, rusak setelah online. - Ditaruh di
<head>, supaya gaya sudah siap sebelum konten ditampilkan dan halaman tidak sempat "berkedip" polos.
Selector: jembatan yang sebenarnya
<link> menyambungkan file. Selector menyambungkan setiap aturan ke elemen.
Hasilnya: judul biru tua, paragraf berjarak baris lega, kedua tombol merah berteks putih, dan tombol "Pesan" tampak pudar karena punya data-status="habis".
| Selector | Mencari | Contoh |
|---|---|---|
#nama | Satu elemen dengan id itu | #judul |
.nama | Semua elemen yang punya class itu | .tombol |
tag | Semua elemen dengan tag itu | p |
[atribut] / [atribut="nilai"] | Elemen dengan atribut tertentu | [data-status="habis"] |
Selector atribut untuk data-* sangat berguna nanti: JavaScript cukup mengganti nilai data-status, lalu CSS otomatis menyesuaikan tampilan.
Kenapa CSS tidak ter-apply?
Kalau sebuah aturan tidak berefek, cek berurutan dari yang paling kasar ke paling halus:
- File-nya termuat? Buka DevTools (F12), tab Network, muat ulang. Kalau
style.cssberstatus 404, masalahnya di path ataurel. - Selector-nya cocok? Klik kanan elemen, pilih Inspect. Di panel Styles, aturanmu harus muncul. Kalau tidak muncul sama sekali, selector tidak cocok dengan elemen: typo, lupa titik, atau beda huruf besar kecil.
- Aturannya kalah? Kalau aturan muncul tapi dicoret, ada aturan lain yang menang: inline style, specificity lebih tinggi, atau ditulis belakangan.
- Sintaksnya valid? Ikon peringatan di panel Styles menandakan properti atau nilai yang tidak dikenal.
Kesalahan umum
- Typo nama class: HTML
class="Harga", CSS.harga. Nama class case-sensitive, jadi keduanya berbeda. - Lupa titik atau pagar: menulis
tombol { }padahal maksudnya.tombol { }. Browser mencari tag<tombol>yang tidak ada. - Path relatif dari folder yang salah: memakai
css/style.cssdihalaman/tentang.html, padahal seharusnya../css/style.css. - Lupa
rel="stylesheet"di<link>. - Inline style sisa debugging yang diam-diam mengalahkan aturan di file CSS.
- Mengira
<style>selalu menang atas file eksternal. Yang menentukan adalah specificity, lalu urutan penulisan.
Rangkuman
- HTML adalah titik awal yang memanggil CSS dan JS. CSS tidak pernah memanggil JS, sedangkan JS bisa menjangkau HTML dan CSS.
- Tiga cara menyisipkan CSS: inline,
<style>, dan<link>. Pakai<link>ke file eksternal untuk proyek sungguhan. - Prioritas:
!important, lalu inline, lalu specificity, lalu urutan penulisan. - Path relatif dihitung dari file HTML yang membuka:
./folder ini,../folder induk,/root situs. - Selector (
#id,.class, tag,[atribut]) adalah jembatan nyata dari aturan CSS ke elemen HTML.
Slide 9 sampai 12 dari deck HTML CSS JavaScript. Penjelasan lengkapnya ada di Bacaan.

Selesaikan bab ini
- 1. Baca materi
- 2. Latihan kode (1)
- 3. Kuis (4 soal)
Latihan kode: Perbaiki koneksi CSS yang putus
Kartu produk ini harusnya berwarna, tapi empat aturan CSS tidak ter-apply. Cari penyebabnya dan perbaiki (boleh di HTML atau CSS, pilih yang paling masuk akal):
- Judul produk harus biru
#1572b6. Periksa selector-nya. - Harga harus tebal dan 20px. Periksa nama class-nya, huruf besar kecil berpengaruh.
- Info stok harus pudar (
opacity: 0.5). Nama atribut di HTML dan selector harus sama. - Tombol harus oranye dari aturan
.tombol. Ada sesuatu di HTML yang mengalahkannya.
Cek pemahaman
1File `halaman/tentang.html` ingin memuat `css/style.css` yang ada di akar proyek. `href` mana yang benar?
2Apa warna teks paragraf ini?
<style> #info { color: blue; } </style> <style> .teks { color: red; } </style> <p id="info" class="teks">Halo</p>3Path `/css/style.css` dihitung dari akar situs, bukan dari folder tempat file HTML berada.
4Apa yang terjadi pada `<link href="css/style.css">` yang tidak punya atribut `rel`?