Menu

Tag Section HTML: section vs article vs div

Elemen <section> mengelompokkan konten dengan satu tema di bawah heading-nya sendiri. Pelajari kapan memakai <section>, kapan <article> atau <div> lebih tepat, bagaimana ketiganya disarangkan, dan bagaimana section yang diberi label menjadi landmark.

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

Untuk apa tag section

<section> mengelompokkan konten dengan satu tema, dan diawali dengan heading yang menamai tema itu. Landing page yang dibagi menjadi "Features", "Pricing" dan "FAQ" adalah contoh klasiknya:

Setiap section adalah satu bab dari halaman, dan setiap heading adalah satu baris di daftar isi halaman itu. Seperti tag semantik lainnya, <section> tidak punya gaya default; border-nya berasal dari CSS.

section vs article vs div

Ketiganya terlihat sama di layar. Yang berbeda adalah apa yang mereka katakan tentang kontennya:

ElemenArtinyaCara mengujinya
<article>Satu bagian yang lengkap dan berdiri sendiriApakah tetap masuk akal kalau diterbitkan sendirian, di situs lain atau di sebuah feed?
<section>Bagian bertema dari sesuatu yang lebih besarApakah punya (atau butuh) heading, dan apakah merupakan satu bab dari sesuatu?
<div>Tidak ada: kotak untuk styling atau layoutApakah hanya ada untuk CSS atau JavaScript?

Postingan blog, komentar forum, berita dan kartu produk adalah article. "Features", "Chapter 2" dan "Related products" adalah section. Baris flex yang menyejajarkan tiga kartu adalah div.

Article di dalam section

Keduanya bisa disarangkan ke dua arah. Di sini section "Latest posts" berisi beberapa article yang berdiri sendiri:

Perhatikan <div class="grid">: elemen itu ada hanya untuk menyusun kartu-kartu dalam satu baris, jadi div adalah tag yang tepat untuknya. Setiap kartu adalah article karena setiap postingan berdiri sendiri.

Section di dalam article

Article yang panjang bisa dibagi menjadi beberapa section, seperti bab-bab dalam buku. Tingkat heading-nya melanjutkan dari heading article itu sendiri:

Kotak biru adalah article-nya (seluruh panduan), garis hijau adalah section-section-nya. Beri section tingkat heading-nya sendiri: article h2 berisi section h3.

Section bernama menjadi landmark

Screen reader mencantumkan elemen tertentu sebagai landmark yang bisa dilompati pengguna. Sebuah <section> menjadi landmark region hanya kalau punya nama yang aksesibel. Arahkan aria-labelledby ke heading-nya:

<section aria-labelledby="pricing-title">
  <h2 id="pricing-title">Pricing</h2>
  ...
</section>

Lakukan ini hanya untuk beberapa section yang ingin langsung dituju pengguna, bukan untuk setiap section: halaman dengan dua puluh landmark sama sulitnya ditelusuri dengan halaman tanpa landmark sama sekali. Section tanpa nama tetap membantu, karena heading-nya muncul di daftar heading screen reader.

Section juga cocok menjadi tujuan link di dalam halaman. Beri sebuah section id, dan link dengan href="#id" akan melompat ke sana:

Kesalahan umum

  • Memakai <section> sebagai pembungkus untuk styling. Kalau tidak ada heading dan tidak ada tema, pakai <div>. Halaman HTML semantik menunjukkan tempat setiap tag layout.
  • Membungkus satu postingan blog dengan <section>. Postingan yang berdiri sendiri adalah <article>.
  • Section tanpa heading. Tambahkan heading, walaupun disembunyikan secara visual, atau pikirkan ulang apakah itu memang section.
  • Mengganti <main> dengan <section>. Konten utama halaman ada di <main>; section diletakkan di dalamnya.
  • Memberi nama setiap section. Tambahkan aria-labelledby hanya ke section yang penting, supaya daftar landmark tetap pendek.

Pertanyaan yang sering diajukan

Apa itu tag section di HTML?

<section> mengelompokkan konten yang termasuk dalam satu tema, seperti bab dari sebuah dokumen atau bagian "Pricing" di sebuah landing page. Biasanya section diawali dengan heading yang menyebutkan isinya.

Apa perbedaan section dan div?

<section> menyatakan bahwa kontennya adalah bagian bertema dari dokumen dengan heading-nya sendiri. <div> tidak menyatakan apa-apa; elemen ini hanyalah kotak untuk styling atau layout. Kalau kamu hanya butuh pembungkus untuk CSS, pakai <div>.

Apa perbedaan section dan article?

<article> adalah konten yang tetap masuk akal sendirian, di luar halamannya: postingan blog, komentar, kartu produk. <section> adalah bagian dari sesuatu yang lebih besar dan hanya masuk akal dalam konteksnya. Tanyakan apakah bagian itu bisa diterbitkan sendirian: kalau bisa, itu article.

Bolehkah article berisi section, dan section berisi article?

Boleh, keduanya. Article yang panjang bisa dibagi menjadi beberapa section, dan section seperti "Latest posts" bisa berisi daftar article.

Apakah section butuh heading?

Hampir selalu perlu, karena heading-lah yang menamai temanya. Kalau kamu tidak bisa memikirkan heading untuknya, konten itu mungkin bukan section dan <div> lebih cocok.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai