- Bab 1 dari 7
- 25 menit
- 1 latihan kode
- 4 soal kuis
Tiga Pilar Web: HTML, CSS, dan JavaScript
Di bab ini (10 bagian)
Tujuan bab ini
- Menjelaskan peran HTML, CSS, dan JavaScript dengan analogi rumah, plus batas tanggung jawab masing-masing.
- Menunjuk dua baris di dokumen HTML yang jadi titik koneksi ke CSS dan JavaScript.
- Memakai atribut penghubung (
id,class,data-*,for,href/src) sebagai "alamat" elemen. - Membaca anatomi aturan CSS dan mengenali empat pekerjaan utama JavaScript di halaman.
Kenapa kelas ini ada
Kamu mungkin sudah belajar HTML dan CSS (lihat kelas HTML5 dan CSS3) dan sudah kenalan dengan JavaScript (lihat kelas JavaScript). Tapi banyak pemula mentok justru di bagian sambungannya: CSS sudah ditulis tapi tidak muncul, script jalan tapi querySelector menghasilkan null, tombol diklik tapi tidak ada yang berubah. Masalahnya jarang di sintaks bahasa itu sendiri. Hampir selalu di koneksi antar file.
Kelas ini fokus ke koneksi itu. Kita tidak akan mengulang semua tag HTML atau semua properti CSS. Kita akan membedah bagaimana ketiganya saling memanggil.
Analogi: web itu seperti rumah
Bayangkan kamu membangun rumah:
- HTML adalah kerangka rumah. Pondasi, dinding, pintu, jendela. HTML menentukan apa yang ada dan di mana letaknya: ada judul, ada paragraf, ada tombol, ada formulir.
- CSS adalah cat dan dekorasi. Warna dinding, jenis lantai, ukuran ruangan, posisi perabot. CSS menentukan bagaimana semua itu terlihat.
- JavaScript adalah listrik dan mekanik. Saklar lampu, bel pintu, kunci otomatis. JavaScript menentukan apa yang terjadi saat ada aksi, misalnya tombol diklik atau formulir dikirim.
Rumah tanpa cat tetap bisa ditinggali, cuma kurang enak dilihat. Rumah tanpa listrik tetap berdiri, cuma tidak ada yang bisa dinyalakan. Tapi cat dan kabel listrik tanpa dinding? Tidak ada tempat menempelnya. Itu sebabnya HTML selalu jadi dasar: CSS dan JavaScript sama-sama "menempel" ke elemen HTML.
Satu hal penting dari analogi ini: tukang cat dan tukang listrik harus diberi tahu ruangan mana yang dikerjakan. Di web juga begitu. Ketiganya biasanya file terpisah (index.html, style.css, script.js), dan browser tidak otomatis tahu bahwa style.css milik index.html. Kita yang harus menghubungkannya secara sengaja.
Tiga pilar dan tanggung jawabnya
| Pilar | Ekstensi | Tugas | Contoh kecil |
|---|---|---|---|
| HTML | .html | Struktur dan makna konten | <h1 id="judul">Halo</h1> |
| CSS | .css | Tampilan dan tata letak | #judul { color: crimson; } |
| JavaScript | .js | Logika dan interaksi | judul.textContent = "Hai!"; |
Prinsip ini disebut separation of concerns: struktur di HTML, gaya di CSS, perilaku di JavaScript. Kenapa repot dipisah? Karena saat proyek membesar, kamu ingin tahu persis harus membuka file mana. Mau ganti warna tombol? Buka CSS. Mau ganti teks menu? Buka HTML. Mau ubah apa yang terjadi saat tombol diklik? Buka JavaScript. Kalau warna ditulis di JavaScript dan logika ditulis di atribut HTML, kamu harus mencari ke tiga tempat setiap kali ada perubahan kecil.
Anatomi dokumen HTML: dua titik koneksi
Di browser, halaman ini menampilkan judul besar "Halo Dunia" dan satu tombol. Kalau css/style.css dan js/script.js ada, judul dan tombol itu ikut diberi gaya dan perilaku. Kalau tidak ada, kamu tetap melihat judul dan tombol polos. HTML tidak "rusak" hanya karena CSS atau JS gagal dimuat.
Perhatikan dua baris kuncinya:
<link rel="stylesheet" href="css/style.css">di dalam<head>: titik koneksi ke CSS.<script src="js/script.js"></script>sebelum</body>: titik koneksi ke JavaScript.
Sisanya adalah kerangka standar: <!DOCTYPE html> menandai dokumen HTML5, <head> berisi informasi yang tidak tampil (judul tab, charset, file gaya), dan <body> berisi konten yang terlihat. Kenapa <link> di head tapi <script> di akhir body? Akan dibahas tuntas di bab berikutnya.
Atribut penghubung: alamat sebuah elemen
Menghubungkan file baru setengah jalan. CSS dan JavaScript juga butuh cara menemukan elemen tertentu di dalam halaman. Caranya lewat atribut yang berfungsi seperti alamat rumah.
| Atribut | Sifat | Dipakai CSS | Dipakai JS |
|---|---|---|---|
id="judul" | Unik, satu per halaman | #judul { } | document.getElementById("judul") |
class="tombol" | Boleh dipakai banyak elemen | .tombol { } | document.querySelectorAll(".tombol") |
data-level="pro" | Menyimpan data tambahan | [data-level="pro"] { } | el.dataset.level |
for="email" | Menghubungkan <label> ke <input id="email"> | jarang | label.htmlFor |
href / src | Alamat file atau halaman lain | a[href^="https"] { } | el.getAttribute("href") |
Beberapa catatan yang sering terlewat:
- Satu elemen boleh punya banyak class sekaligus:
class="tombol utama". Itu dua class,tomboldanutama, dipisah spasi. idharus unik. Kalau ada dua elemen dengan id yang sama,getElementByIdhanya mengembalikan yang pertama, dan kamu akan bingung kenapa elemen kedua tidak berubah.- Atribut
data-*bebas kamu namai, asal diawalidata-. Di JavaScript,data-user-iddibaca sebagaidataset.userId(tanda hubung jadi camelCase), dan nilainya selalu string. fordi<label>adalah koneksi di dalam HTML itu sendiri: klik teks label, kursor langsung pindah ke input yang id-nya cocok. Bagus untuk aksesibilitas.hrefdansrcadalah koneksi ke file lain:hrefdi<a>dan<link>,srcdi<img>dan<script>.
Tanpa penanda seperti ini, CSS dan JavaScript cuma bisa memilih berdasarkan nama tag, misalnya "semua <p>". Itu terlalu kasar untuk halaman sungguhan.
Anatomi aturan CSS
Hasilnya: setiap elemen dengan class="tombol" jadi berlatar oranye, berteks putih, dengan ruang dalam 12px atas-bawah dan 24px kiri-kanan.
- Selector (
.tombol): menentukan elemen mana yang kena. Inilah jembatan CSS ke HTML. - Properti (
background-color): aspek tampilan yang diubah. - Nilai (
#e34f26): isi untuk properti itu. - Satu baris
properti: nilai;disebut deklarasi. Titik koma memisahkan deklarasi. Lupa satu titik koma, deklarasi sesudahnya bisa ikut diabaikan browser tanpa pesan error.
Apa yang dikerjakan JavaScript di halaman
Di browser, JavaScript punya empat pekerjaan utama:
- Memanipulasi DOM: membaca dan mengubah elemen HTML setelah halaman dimuat, misalnya
document.querySelector("#judul").textContent = "Baru";. - Menangani event: merespons klik, ketikan, scroll, atau kirim formulir lewat
addEventListener. - Logika dan data: menghitung, membandingkan, menyimpan nilai, perulangan.
- Komunikasi dengan server: mengambil data lewat
fetchtanpa memuat ulang halaman.
Tiga yang pertama langsung menyentuh HTML dan CSS. Itu yang membuat JavaScript jadi satu-satunya pilar yang bisa menjangkau dua pilar lainnya.
Kesalahan umum
- Mengira browser otomatis menemukan
style.css. Tanpa<link>, file CSS tidak akan pernah dibaca, walau satu folder dengan HTML. - Memakai id yang sama di banyak elemen. Pakai
classuntuk kelompok,idhanya untuk satu elemen. - Menulis
class="tombol, utama". Pemisah class adalah spasi, bukan koma. Koma membuat nama class-nya jaditombol,yang tidak cocok dengan selector.tombol. - Mencampur peran: menulis warna lewat JavaScript atau menulis logika di atribut HTML. Kode tetap jalan, tapi sulit dirawat.
fordi label tidak sama denganidinput. Label tetap tampil, tapi klik label tidak memfokuskan input.
Rangkuman
- HTML = kerangka (apa dan di mana), CSS = dekorasi (bagaimana tampilannya), JavaScript = listrik (apa yang terjadi saat ada aksi).
- Ketiganya file terpisah yang harus dihubungkan sengaja:
<link>untuk CSS,<script>untuk JavaScript. - Atribut
id,class,data-*,for,href, dansrcadalah alamat yang dipakai CSS dan JavaScript untuk menemukan elemen atau file. - Aturan CSS = selector + blok deklarasi
properti: nilai;. - JavaScript memanipulasi DOM, menangani event, mengolah data, dan bicara dengan server.
Slide 1 sampai 8 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: Pasang alamat di kartu profil
CSS dan JavaScript di latihan ini sudah benar, tapi belum ada yang "nyambung" ke HTML karena elemennya belum punya alamat. Ubah HTML saja:
<article>dibericlass="kartu"dandata-level="pro".<h2>diberiid="nama".<label>dihubungkan ke input email dengan atributfor.<button>dibericlass="tombol"supaya JavaScript bisa mengisi teksnya.
Hasilnya: kartu tersusun vertikal dengan garis oranye tebal di kiri, nama berwarna biru, dan tombol oranye bertuliskan "Ikuti".
Cek pemahaman
1Dalam analogi rumah, JavaScript paling tepat diibaratkan sebagai apa?
2Browser otomatis memuat `style.css` bila file itu berada di folder yang sama dengan `index.html`.
3Apa warna teks tombol ini di browser?
<style> .tombol { color: green; } </style> <button class="tombol, utama">Beli</button>4Atribut apa yang menghubungkan `<label>` ke `<input id="email">`?
