HTML Semantik - Membangun Struktur Halaman Web Berdasarkan Makna

Pernahkah kamu melihat kode HTML yang isinya hanya tumpukan tag <div> di dalam <div> lainnya pada hampir seluruh isi dokumen? Secara visual setelah diberi CSS, hasilnya mungkin terlihat rapi. Namun, ada potensi permasalahan besar jika HTML tidak digunakan secara semantik.

HTML Semantik, atau semantic HTML, intinya adalah penulisan tag yang bermakna. Semantic berarti "berkaitan dengan makna". Menulis HTsssML semantik berarti menyusun konten berdasarkan makna setiap elemen, bukan berdasarkan tampilannya. Misalnya, gunakan <nav> untuk navigasi, atau <header> dan <footer> header dan footer halaman.

Jangan semuanya dibikin melulu pakai <div> thok.


1. Peran <div> vs Tag Kontainer Semantik

Meskipun hasil tampilannya bisa saja sama, secara semantik keduanya sangat berbeda:

❌ Non-Semantik (Hanya Div)
div (header)
div (nav)
div (link)
div (main content)
βœ… Semantik (Landmarks)
header (Banner)
main (Utama)

Menggunakan elemen semantik membantu alat bantu (screen reader) menemukan "Landmarks" halaman dengan mudah[cite: 124].

2. Bagaimana Browser Melihat Kodemu (AOM)

Saat browser membaca HTML-mu, ia tidak hanya membuat DOM (Document Object Model), tapi juga membangun AOM (Accessibility Object Model).

Contoh HTML dan gambaran hasil DOM Tree dan Accessability Tree-nya.

<!DOCTYPE html>
<html lang="id">
<head>
  <title>Contoh AOM</title>
</head>
<body>

<header>
  <h1>Website Saya</h1>
</header>

<nav>
  <ul>
    <li><a href="#">Home</a></li>
  </ul>
</nav>

<main>
  <section>
    <h2>Artikel</h2>
    <p>Ini paragraf.</p>
  </section>

  <div aria-hidden="true">
    <p>Tidak perlu dibaca screen reader</p>
  </div>
</main>

</body>
</html>

🌳 DOM Tree

Document
└── html
    └── body
        β”œβ”€β”€ header
        β”‚   └── h1 ("Website Saya")
        β”œβ”€β”€ nav
        β”‚   └── ul
        β”‚       └── li
        β”‚           └── a ("Home")
        └── main
            β”œβ”€β”€ section
            β”‚   β”œβ”€β”€ h2 ("Artikel")
            β”‚   └── p ("Ini paragraf.")
            └── div (aria-hidden="true")
                └── p ("Tidak perlu dibaca screen reader")
    

β™Ώ Accessibility Tree

Document
β”œβ”€β”€ Banner
β”‚   └── Heading Level 1 ("Website Saya")
β”œβ”€β”€ Navigation
β”‚   └── Link ("Home")
└── Main
    └── Region ("Artikel")
        β”œβ”€β”€ Heading Level 2 ("Artikel")
        └── Paragraph ("Ini paragraf.")
    

3. Hirarki Judul: Lebih dari Sekadar Ukuran

Jangan memilih tag berdasarkan seberapa besar ukuran huruf atau bagaimana style bawaannya muncul di layar. Pilihlah berdasarkan fungsinya.

Penting

Tampilan adalah urusan CSS, sedangkan HTML adalah urusan struktur. Jika ingin paragraf terlihat besar, gunakan CSS, jangan paksa menggunakan <h1>.

HTML Semantik - Membangun Struktur Halaman Web Berdasarkan Makna 20260328232914342.png

4. Elemen Interaksi: Pilih <button> untuk Aksi, <a> untuk Navigasi**

Mungkin pernah tpikir membuat tombol dari <div> atau menggunakan <a>. Namun, untuk memicu sebuah aksi (bukan pindah halaman), tag <button> adalah pilihan terbaik karena memiliki fitur bawaan yang tidak perlu kamu koding ulang:

Fitur / Kemampuan Tag <button> Tag <a> (Anchor) Tag <div> (+ CSS saja)
Tujuan Utama Aksi / interaksi Navigasi (pindah halaman / lokasi) Layout / dekorasi
Implicit Role (AOM) "button" "link" (jika ada href) Tidak ada (generic)
Fokus Tab Keyboard βœ… Otomatis βœ… Otomatis (jika ada href) ❌ Tidak (perlu tabindex)
Aktivasi Tombol 'Enter' βœ… Ya βœ… Ya (jika ada href) ❌ Tidak (perlu JS)
Aktivasi Tombol 'Space' βœ… Ya ❌ Tidak ❌ Tidak (perlu JS)
Atribut disabled βœ… Native ❌ Tidak ada ❌ Tidak ada

Mengapa Harus Semantic?

Menulis HTML secara logis dan bermakna membantu dalam jangka panjang:

Sebelum asyik bermain dengan logika animasi yang lebih kompleks, tanyakan: "Elemen HTML mana yang paling tepat mewakili bagian ini?". Jika kamu sudah mempertimbangkannya, kemungkinan besar kamu sudah memilih elemen yang benar.


  1. Screen reader adalah perangkat lunak (software) yang membantu penggunaβ€”terutama yang memiliki gangguan penglihatanβ€”untuk mendengar atau merasakan isi layar melalui suara (text-to-speech) atau braille. β†©οΈŽ

Connected Pages
On this page
1. Peran vs Tag Kontainer Semantik
  • 2. Bagaimana Browser Melihat Kodemu (AOM)
  • 3. Hirarki Judul: Lebih dari Sekadar Ukuran
  • 4. Elemen Interaksi: Pilih untuk Aksi, untuk Navigasi**
  • Mengapa Harus Semantic?