Recraftory

Accessibility - HTML Semantik

HTML semantik menggunakan elemen sesuai maknanya, bukan hanya untuk styling. Ini adalah fondasi aksesibilitas yang paling fundamental.

Perbedaan Semantik vs Non-Semantik

<!-- Buruk — div dan span tanpa makna -->
<div class="header">
  <div class="nav">
    <div class="button" onclick="submit()">Kirim</div>
  </div>
</div>

<!-- Baik — elemen dengan makna -->
<header>
  <nav>
    <button type="submit">Kirim</button>
  </nav>
</header>

Elemen Semantik Penting

ElemenFungsiScreen Reader
<header>Header halaman/sectionBanner
<nav>Navigasi utamaNavigation
<main>Konten utamaMain
<article>Konten independenArticle
<section>Bagian dengan temaRegion (jika punya heading)
<aside>Konten sampinganComplementary
<footer>FooterContentinfo
<figure> / <figcaption>Gambar dengan captionFigure
<time>Tanggal/waktu
<details> / <summary>Konten expandable

Landmark Regions

Screen reader menggunakan landmark untuk navigasi cepat:

<body>
  <header>...</header>
  <nav aria-label="Utama">...</nav>
  <main>
    <section aria-labelledby="judul-1">
      <h2 id="judul-1">Judul Section</h2>
      ...
    </section>
  </main>
  <aside>...</aside>
  <footer>...</footer>
</body>

Heading Hierarchy

Heading (<h1> sampai <h6>) harus bersifat hierarkis dan tidak boleh skip:

<!-- Salah — skip dari h1 ke h3 -->
<h1>Judul Halaman</h1>
<h3>Subjudul</h3>

<!-- Benar -->
<h1>Judul Halaman</h1>
<h2>Bab 1</h2>
<h3>Subbab 1.1</h3>
<h2>Bab 2</h2>
<!-- Gunakan <a> untuk navigasi ke halaman/resource -->
<a href="/tentang">Tentang Kami</a>

<!-- Gunakan <button> untuk aksi di halaman yang sama -->
<button type="button" onclick="bukaModal()">Buka Modal</button>

List Semantik

<!-- Screen reader akan mengumumkan "list, 3 items" -->
<ul>
  <li>HTML</li>
  <li>CSS</li>
  <li>JavaScript</li>
</ul>

<!-- Ordered list untuk urutan penting -->
<ol>
  <li>Buka aplikasi</li>
  <li>Klik "Daftar"</li>
  <li>Isi formulir</li>
</ol>