Menu

HTML Semantik: Tag, Struktur Halaman dan Aksesibilitas

HTML semantik berarti memilih tag berdasarkan isi kontennya, bukan tampilannya. Pelajari tag layout semantik (header, nav, main, article, aside, footer), apa yang diberikannya kepada screen reader dan mesin pencari, dan cara memeriksa struktur halamanmu.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Apa itu HTML semantik

HTML semantik berarti memilih setiap tag berdasarkan apa kontennya: navigasi masuk ke <nav>, konten utama ke <main>, postingan blog ke <article>. Tag-tag ini terlihat seperti kotak biasa, tapi memberi tahu browser, screen reader dan mesin pencari apa fungsi setiap bagian halaman. Berikut halaman lengkap yang dibuat dari tag layout semantik, masing-masing diberi garis tepi dan label:

Hapus elemen <style> dan halaman itu terlihat seperti teks biasa, tapi strukturnya tetap ada bagi siapa pun yang membaca kodenya, dan bagi software yang membacanya tanpa melihat piksel.

Tag layout semantik

TagPakai untukLandmark screen reader
<header>Pembuka halaman atau article: logo, judul, nama penulisbanner (hanya kalau tidak berada di dalam article, aside, main, nav atau section)
<nav>Blok link navigasi utamanavigation
<main>Konten yang unik untuk halaman ini, sekali per halamanmain
<article>Bagian yang berdiri sendiri dan masuk akal sendirian: postingan, komentar, kartu produktidak ada secara default
<section>Kelompok konten bertema dengan heading-nya sendiriregion, hanya kalau punya nama yang aksesibel
<aside>Konten terkait di samping alur utama: sidebar, catatancomplementary
<footer>Info penutup halaman atau article: hak cipta, penulis, linkcontentinfo (hanya di tingkat halaman)

Setiap tag punya halamannya sendiri dengan penjelasan lebih lengkap: header, nav, section dan footer. Halaman ini membahas bagaimana semuanya saling melengkapi.

Kenapa tidak pakai div saja

Halaman yang hanya dibuat dari elemen <div> bisa terlihat sama persis dengan halaman semantik. Bedanya ada pada apa yang dikatakan markup-nya. Tekan tombol-tombolnya untuk memberi garis tepi pada elemen yang membawa makna di setiap versi:

Versi div menemukan 0, versi semantik menemukan 4. Itulah yang dilihat teknologi bantu: pengguna screen reader bisa langsung melompat ke navigasi atau konten utama di halaman semantik, tapi harus membaca semuanya di halaman div. Nama class seperti class="nav" tidak berarti apa-apa bagi browser.

<div> tetap pilihan yang tepat untuk kotak yang ada hanya demi styling atau layout, seperti pembungkus flex .cols di contoh pertama.

main, article dan aside

<main> membungkus apa yang unik untuk halaman ini dan hanya muncul sekali. Di dalamnya, <article> menandai konten yang tetap masuk akal kalau disalin sendirian ke situs lain, dan <aside> menandai konten yang berkaitan tapi bisa dihapus tanpa merusak article-nya:

Article itu punya <header> dan <footer>-nya sendiri. Keduanya tidak terbatas pada tingkat halaman: masing-masing membuka atau menutup article atau section terdekatnya. Elemen <time datetime> memberikan tanggal dalam bentuk yang bisa dibaca mesin sambil menampilkannya dalam bentuk yang mudah dibaca manusia.

Periksa kerangka heading-mu

Heading adalah setengah bagian lain dari struktur. Pengguna screen reader sering menjelajahi halaman dari heading ke heading, jadi tingkatannya harus terbaca seperti daftar isi tanpa tingkat yang dilompati. Script ini mencetak kerangka halaman tempat script itu berjalan:

h4 di bawah "Brewing" melompati satu tingkat. Ganti menjadi h3 dan kerangkanya terbaca rapi. Pilih tingkat heading berdasarkan struktur, lalu ubah ukurannya dengan CSS kalau kamu ingin lebih besar atau lebih kecil.

Tag semantik lainnya

Semantik bukan hanya soal layout. Tag tingkat teks berikut juga membawa makna:

TagMakna
<strong>Teks penting (tebal secara default)
<em>Penekanan (miring secara default)
<figure> dan <figcaption>Gambar, grafik atau contoh kode beserta keterangannya
<time datetime="...">Tanggal atau waktu dalam bentuk yang bisa dibaca mesin
<address>Detail kontak penulis halaman atau article
<mark>Teks yang disorot, seperti hasil pencarian yang cocok
<abbr title="...">Singkatan beserta kepanjangannya
<button>Sesuatu yang menjalankan sebuah aksi

Arahkan kursor ke singkatan "W3C" untuk melihat kepanjangannya di tooltip.

Kesalahan umum

  • Memakai tag demi tampilannya. <blockquote> untuk kutipan, bukan untuk indentasi; <h3> untuk tingkat heading, bukan untuk teks tebal berukuran sedang. Atur gayanya dengan CSS.
  • Membungkus semuanya dengan <section>. Section harus punya heading dan tema. Kalau kamu butuh kotak untuk styling, pakai <div>.
  • Lebih dari satu <main> yang terlihat. Cukup satu per halaman, dan jangan pernah menyarangkannya di dalam <article>, <aside>, <header>, <nav> atau <footer>.
  • Memasukkan setiap daftar link ke <nav>. Simpan untuk blok navigasi utama, seperti menu situs atau daftar isi. Beberapa link di footer tidak membutuhkannya.
  • Elemen <div> yang bisa diklik. <div onclick> tidak bisa dijangkau dengan keyboard. Pakai <button> untuk aksi dan <a href> untuk navigasi.

Pertanyaan yang sering diajukan

Apa itu HTML semantik?

HTML semantik adalah markup yang setiap tag-nya menjelaskan makna kontennya: <nav> untuk navigasi, <article> untuk satu bagian yang berdiri sendiri, <button> untuk tombol. Dengan begitu, browser, screen reader dan mesin pencari bisa memahami halaman tanpa menebak-nebak dari nama class atau gaya.

Apa saja tag semantik di HTML?

Tag layout-nya adalah <header>, <nav>, <main>, <article>, <section>, <aside> dan <footer>. Tag semantik umum lainnya termasuk <figure>, <figcaption>, <time>, <address>, <strong>, <em> dan heading <h1> sampai <h6>.

Apakah div termasuk elemen semantik?

Tidak. <div> tidak punya makna sendiri; elemen ini adalah kotak umum untuk styling dan layout. Pakai saat tidak ada tag semantik yang cocok, dan pakai <header>, <main>, <nav> dan lainnya saat ada yang cocok.

Untuk apa tag aside dipakai?

<aside> berisi konten yang berkaitan dengan konten utama tapi bukan bagian dari alurnya: sidebar, kotak link terkait, catatan glosarium atau kutipan yang ditonjolkan. Di tingkat halaman, screen reader mencantumkannya sebagai landmark complementary.

Berapa banyak elemen main yang boleh ada di satu halaman?

Satu <main> yang terlihat per halaman. Elemen ini membungkus konten yang unik untuk halaman itu, dan tidak boleh berada di dalam <header>, <nav>, <article>, <aside> atau <footer>.

Apakah HTML semantik membantu SEO?

HTML semantik membantu mesin pencari memahami bagian mana yang merupakan konten utama, mana yang navigasi, dan bagaimana heading saling berhubungan. Ini bukan jalan pintas untuk peringkat, tapi menghilangkan tebak-tebakan dan meningkatkan aksesibilitas, yang memang layak dilakukan.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai