Semantic HTML — HTML

Coba kasih kardus polos tanpa label ke tukang pindahan — dia harus buka satu-satu buat tau isinya apa. Kasih kardus yang ada label "DAPUR / PIRING / FRAGILE"…

Tag semantik adalah tag yang namanya menjelaskan isinya. <div> cuma kotak polos, sedangkan <header>, <nav>, <main>, <aside> dan <footer> langsung bilang "ini kepala halaman", "ini menu", "ini isi utama". Kayak kardus pindahan yang diberi label: orang tahu isinya tanpa harus membuka.

🧪 Tebakan cepat: kalau semua tag semantik di halaman diganti <div>, tampilannya berubah gak? Tebak dulu, jawabannya ada di bagian "Kerangka halaman".

Kerangka halaman

<header>
  <h1>Cerita Nusantara</h1>
</header>
<nav>
  <a href="#beranda">Beranda</a>
  <a href="#cerita">Cerita</a>
  <a href="#tentang">Tentang</a>
</nav>
<main>
  <h2>Legenda Danau Toba</h2>
  <p>Konten utama halaman ada di sini.</p>
</main>
<aside>
  <p>Cerita populer lainnya</p>
</aside>
<footer>
  <p>&copy; 2026 Cerita Nusantara</p>
</footer>

Tag semantik itu pembungkus. Judul dan paragrafnya tetap ditulis pakai <h1>, <h2>, <p> di dalamnya.

Jawaban tebakan: tampilannya sama persis, karena tag semantik gak punya gaya khusus. Bedanya ada di arti. Screen reader (program yang membacakan halaman buat pengguna tunanetra) mendaftar bagian-bagian ini, jadi penggunanya bisa langsung loncat ke menu atau ke isi utama. Mesin pencari juga jadi tahu mana isi utamanya.

<article> buat konten yang berdiri sendiri

<article> membungkus konten yang tetap masuk akal walau dipindah ke halaman lain: satu berita, satu postingan blog, satu komentar. Judul dan isinya ditulis di dalam <article>:

<article>
  <h2>Pasar Malam Dibuka Lagi</h2>
  <p>Mulai Jumat, pasar malam buka sampai jam 23.00.</p>
</article>
<aside>
  <p>Iklan: Gratis ongkir minggu ini!</p>
</aside>

Iklannya bukan bagian berita, jadi masuk <aside>. Ada juga <section>, buat mengelompokkan satu bagian halaman yang punya judul sendiri, misalnya bagian "Harga" di halaman produk.

Pakai tag yang namanya pas

<div class="footer"> bisa dibikin mirip <footer>, tapi class cuma nama buat CSS, gak punya arti buat browser. Jadi kalau sebuah bagian sudah punya tag semantik, pakai tagnya. Nama tagnya juga harus yang benar-benar ada: <bottom> atau <sidebar> bukan tag HTML.

Soal jumlah: <main> cuma satu. <nav> boleh lebih dari satu, misalnya menu atas dan menu samping, asal tiap <nav> diberi label sendiri: <nav aria-label="Menu utama">.

⚠️ Jebakan yang sering ketemu

TL;DR: Tag semantik menjelaskan isinya: <header> kepala, <nav> menu, <main> isi utama (cuma satu), <aside> sampingan, <footer> kaki. <article> buat konten yang berdiri sendiri, dengan judul dan isinya di dalamnya. Tampilannya sama dengan <div>, tapi screen reader dan mesin pencari paham artinya. <nav> boleh beberapa, asal diberi aria-label.

Yang akan kamu pelajari