İçeriğe geç
Educora
Başlangıç16 dk5 / 10

Anlamsal HTML ve erişilebilirlik

İçeriğin anlamını belirten öğeleri kullan ve sayfalarını ekran okuyucu kullananlar dâhil herkes için kullanışlı kıl.

Kendini test et
Bu derste öğreneceklerin
  • Anlamsal HTML'in ne olduğunu ve neden önemli olduğunu açıklamak
  • Bir sayfayı <header>, <nav>, <main>, <article>, <aside> ve <footer> ile kurmak
  • Temel erişilebilirlik kurallarını uygulamak: alt metin, başlıklar, klavye, dil
  • ARIA özniteliklerini yalnızca gerektiğinde kullanmak

Tıpatıp aynı görünen iki sayfa düşün. Biri yalnızca <div> öğelerinden, diğeri <header>, <nav>, <main> ve <footer> öğelerinden kurulmuş. Göze hiçbir fark yok. Ama ekran okuyucu kullanan görme engelli bir kullanıcı, bir arama motoru, hatta birkaç ay sonra kodu okuyan sen bile büyük bir fark göreceksiniz. İşte bu anlamsal HTML'dir.

Anlamsal HTML nedir?

Tanım
Anlamsal (semantik) HTML

Her öğenin görünüşüne göre değil, içeriğin anlamına göre seçildiği HTML: başlık <h1>, gezinme menüsü <nav>, düğme ise <button> ile yazılır.

<div> (blok) ve <span> (satır içi) nötr kaplardır; içerik hakkında hiçbir şey söylemezler. CSS ile biçimlendirme için işe yararlar ama anlamlı bir öğe varsa onu tercih et.

Sayfanın ana bölgeleri

ÖğeNe için
<header>sayfanın ya da bölümün girişi: logo, başlık
<nav>ana gezinme bağlantıları
<main>ana içerik; sayfada yalnızca bir tane
<article>kendi başına anlamlı parça: haber, blog yazısı, ürün kartı
<section>kendi başlığı olan tematik bölüm
<aside>yan içerik: ilgili bağlantılar, ipuçları
<footer>sayfanın ya da bölümün sonu: iletişim, telif hakkı
HTML
<style>
  body { font-family: system-ui, sans-serif; margin: 0; color: #1e293b; }
  header, nav, main, footer { padding: 8px 12px; }
  header { background: #fde68a; font-size: 20px; }
  nav { background: #bfdbfe; }
  main { background: #f1f5f9; }
  article { background: white; border: 1px solid #cbd5e1; border-radius: 8px; padding: 0 12px; }
  aside { background: #ddd6fe; margin-top: 8px; padding: 6px 12px; border-radius: 8px; }
  footer { background: #e2e8f0; font-size: 14px; }
</style>

<header><strong>City Library</strong></header>
<nav><a href="books.html">Books</a> · <a href="events.html">Events</a></nav>
<main>
  <article>
    <h2>New books this week</h2>
    <p>Ten new novels are waiting for you.</p>
  </article>
  <aside>Tip: you can renew your books online.</aside>
</main>
<footer>© City Library</footer>
Önizleme
Yapı görünsün diye her bölge kendi rengiyle gösterildi. Menüdeki bağlantılar burada yalnızca örnek amaçlıdır.

Ekran okuyucular bu bölgelerin bir listesini sunar; kullanıcı doğrudan <main>'e ya da <nav>'a atlayabilir. Bu, sayfa yapısı için bir içindekiler tablosu gibidir. Arama motorları da ana içeriğin nerede olduğunu daha iyi anlar.

Erişilebilirlik: herkes için web

Erişilebilirlik (accessibility, kısaca a11y), farklı yeteneklere sahip insanların bir sayfayı kullanabilmesi demektir: görme engelli ve az gören kullanıcılar (ekran okuyucu, yakınlaştırma), işitme engelliler (altyazı), fare kullanamayanlar (yalnızca klavye) ve renkleri ayırt etmekte zorlananlar. Bunun büyük kısmı doğru HTML ile kendiliğinden gelir.

  • Anlamlı her görsele bir alt metni, süs görsellerine ise alt="" ver.
  • Başlıkları sırayla kullan; ekran okuyucu kullananlar çoğu zaman başlıktan başlığa atlar.
  • Eylemler için <button>, gezinme için <a> kullan. Tıklanabilir bir <div>'e klavyeyle (Tab) ulaşılamaz ve Enter ile basılamaz.
  • Her form alanının bir <label>'ı olsun.
  • Sayfanın dilini belirt: <html lang="tr">; böylece ekran okuyucu kelimeleri doğru telaffuz eder.
  • Bilgiyi yalnızca renkle verme: “kırmızı alanlar zorunludur” renkleri ayırt edemeyen biri için işe yaramaz; metin ya da yıldız (*) ekle. Metin ile arka plan arasında yeterli kontrast da olmalı.
HTML
<style>
  body { font-family: system-ui, sans-serif; padding: 12px; }
  .fake, button { display: inline-block; margin: 6px 0; padding: 8px 16px; font: inherit;
    color: white; background: #4f46e5; border: 0; border-radius: 6px; cursor: pointer; }
  button:focus-visible { outline: 3px solid #f59e0b; outline-offset: 2px; }
</style>

<p>Click here, then press <kbd>Tab</kbd> a few times.</p>
<div class="fake" onclick="this.textContent = 'Clicked!'">I am a div</div>
<br>
<button onclick="this.textContent = 'Clicked!'">I am a button</button>
Önizleme
Önizlemedeki metne tıkla ve Tab tuşuna bas: odak <div>'in üzerinden atlayıp düğmeye gelir, Enter ya da Boşluk tuşu ona basar. <div> yalnızca fareyle çalışır. Küçük onclick kodu yalnızca metni değiştirir.

ARIA: HTML yetmediğinde

ARIA öznitelikleri (aria-label, aria-hidden, role), yardımcı teknolojilere ek bilgi verir. Örneğin yalnızca simgeden oluşan bir düğme: <button aria-label="Close">✕</button>. aria-label olmasaydı ekran okuyucu yalnızca simgeyi okurdu ve kullanıcı düğmenin ne yaptığını anlamazdı. aria-hidden="true" ise süs simgelerini ekran okuyuculardan gizler.

Önemli noktalar

  • Anlamsal HTML öğeleri görünüşe değil anlama göre seçer; <div> ve <span> anlam taşımaz.
  • Ana bölgeler: <header>, <nav>, <main> (sayfada bir tane), <article>, <section>, <aside>, <footer>.
  • Ekran okuyucular ve arama motorları sayfayı bölgeleri ve başlıkları sayesinde anlar ve dolaşır.
  • Eylem için <button>, bağlantı için <a>; bunlar klavyeyle kendiliğinden çalışır.
  • ARIA yalnızca boşlukları doldurur, örneğin simge düğmeleri için aria-label; mümkün olduğunda yerleşik HTML öğesini seç.

Kendini test et

10 soru. Her doğru cevap XP kazandırır.

1 / 10
Sayfanın ana içeriği hangi öğenin içine konmalıdır (sayfada yalnızca bir kez)?