ViraStack
  • Academy
  • About
  • Support
HomeSourcesContribute
ViraStack

A DX-first toolkit for frontend developers: starters, agent rules, form hooks, and a guide.

Products

  • ViraStack Start
  • ViraStack AI
  • ViraStack Mask
  • ViraStack Password
  • ViraStack Guide

Explore

  • Academy
  • About
  • Brand
  • Support

© 2026 ViraStack.

Open source · MIT

Web Temelleri

03 / 07

HTML

Anlamlı etiketler ve sayfa yapısı.

HTML Nedir

HTML, bir sayfanın içeriğini ve yapısını tarayıcıya anlatan işaretleme dilidir. Başlık, paragraf, link, görsel, form gibi her parça bir element ile yazılır. Bir element açılış etiketi, içerik ve kapanış etiketinden oluşur; ayarlar açılış etiketine attribute olarak eklenir.1

<!doctype html>
<html lang="tr">
  <head>
    <meta charset="utf-8" />
    <title>Sayfa başlığı</title>
  </head>
  <body>
    <p>Merhaba <strong>dünya</strong>.</p>
    <img src="kedi.jpg" alt="Pencerede uyuyan gri bir kedi" />
  </body>
</html>

<head> kullanıcının görmediği bilgileri (başlık, karakter seti) taşır, <body> ekranda görünen her şeyi içerir. <img> ve <br> gibi void elementlerin içeriği ve kapanış etiketi yoktur. Elementler düzgün iç içe yazılmalıdır: <p><strong>…</strong></p> doğru, <p><strong>…</p></strong> yanlıştır.1

Semantic HTML

Semantic HTML, etiketi nasıl göründüğüne göre değil ne anlama geldiğine göre seçmektir.2 <div> ve <span> tarayıcıya ve yardımcı araçlara içerik hakkında hiçbir şey söylemez. <nav>, <button> ya da <h2> ise ne olduklarını söyler.

Bu önemlidir, çünkü tarayıcı HTML'den bir erişilebilirlik ağacı (accessibility tree) üretir ve ekran okuyucular sayfayı buradan okur. Anlamlı etiketler sayfaya gezinilebilir bölümler (landmark) kazandırır.2 Görünüş ise HTML'in değil CSS'in işidir; bir etiketi varsayılan stili hoşunuza gidiyor diye seçmeyin.2

Ölçek büyüktür: 2026'da bir milyon ana sayfanın %53,1'inde görsellerde alternatif metin, %51'inde form alanlarında etiket eksikti.3 Çoğu, doğru etiket seçilseydi çıkmayacak hatalardır.

Sayfa İskeleti

Bir sayfayı bölmek için kullanılan başlıca etiketler şunlardır:4

EtiketNe için
<header>Sayfanın ya da bir bölümün üst kısmı (logo, başlık)
<nav>Ana gezinme bağlantıları
<main>Sayfaya özgü ana içerik; sayfada bir kez kullanılır
<article>Tek başına anlamlı, bağımsız içerik (blog yazısı, ürün kartı)
<section>Tematik bir grup; başında bir başlık olmalı
<aside>Ana içerikle dolaylı ilişkili yan bilgi
<footer>Sayfanın ya da bölümün alt kısmı
<body>
  <header>
    <nav>…</nav>
  </header>
  <main>
    <article>
      <h1>Yazının başlığı</h1>
      <p>…</p>
    </article>
    <aside>İlgili yazılar</aside>
  </main>
  <footer>…</footer>
</body>

HTML Standard'a göre <section> genel amaçlı bir kutu değildir; yalnızca stil vermek için bir kapsayıcı gerekiyorsa <div> kullanılır.5 Üstteki <header> ve <footer> sayfa düzeyinde landmark olur, <article> ya da <section> içindekiler olmaz.6

Tip

Uygun anlamlı bir etiket yoksa <div> kullanmakta sakınca yok. Sorun, anlamlı etiket varken <div> yazmaktır.4

Başlıklar

<h1>'den <h6>'ya kadar altı başlık seviyesi vardır. Başlıklar sayfanın içindekiler tablosu gibidir; ekran okuyucu kullanıcıları başlıklar arasında atlayarak gezinir.7

Do

  • Sayfada genellikle tek <h1> kullanın.

  • Seviyeleri sırayla inin: <h1>, <h2>, <h3>.

Don't

  • <h2>'den <h4>'e atlamayın.

  • Yazıyı büyütmek için başlık kullanmayın; bunun için CSS font-size vardır.8

Doğru Etiketi Seçmek

Button ve link

Link bir başka yere götürür, buton bulunduğunuz sayfada bir işlem yapar (menü açmak, formu göndermek gibi).9

<a href="/fiyatlar">Fiyatları gör</a>
<button type="button">Menüyü aç</button>

<div onclick="…"> ile buton yapmak kolay görünür ama klavyeyle odaklanma, Enter ve Space ile çalışma gibi tarayıcının bedavaya verdiği her şeyi kaybettirir; sonra hepsini elle yazmanız gerekir.710

Warning

<div> bir buton gibi davranmaz. Önce <button> kullanın.

Form alanları

Her form alanının bir <label>'ı olmalıdır. Etiket alanın ne için olduğunu ekran okuyucuya söyler, ayrıca tıklayınca alana odaklanır.11

<label for="email">E-posta</label>
<input id="email" type="email" name="email" />

Görseller

alt görselin ilettiği bilgiyi kısa anlatır. Görsel süs içinse alt="" bırakılır; böylece ekran okuyucu atlar. Link ya da buton içindeki görselin alt metni gideceği yeri ya da yaptığı işi anlatır.12

Link metni

"Buraya tıklayın" yerine tek başına okunduğunda anlamlı bir metin yazın: "Balinalar hakkında daha fazla bilgi".7

ARIA'dan Önce HTML

ARIA, HTML'in yetmediği durumlarda elemente rol ve durum ekleyen özelliklerdir (role, aria-label). W3C'nin ilk kuralı şudur: gereken anlam ve davranışı veren yerel bir HTML elementi varsa ARIA eklemek yerine onu kullanın.13 role="button" yalnızca anlam ekler, klavye davranışını eklemez.2 Veriler de ARIA kullanan sayfalarda ortalama hatanın daha yüksek çıktığını gösteriyor (59,1'e karşılık 42), karmaşık sayfaların daha çok ARIA kullanması bunun bir kısmını açıklayabilir.3

Detaylı Öğrenmek İçin

  • Baştan sona kurs: web.dev'in ücretsiz Learn HTML kursu.14

  • Her etiketin tanımı: MDN'in element listesi, işlevine göre gruplanmış.15

  • Kendi sayfanı kontrol et: W3C'nin Nu Html Checker doğrulayıcısı.16

  • Konuşma: Jen Luker'ın button ve div konuşması (12 dk).10

  • Konuşma: Marcy Sutton'ın link ve buton konuşması.17

Kaynaklar

  • 1DocsMDN: Basic HTML syntax

    Element yapısı, attribute, void elementler, iç içe yazım, doctype ve `html/head/body`.

  • 2Docsweb.dev: Semantic HTML

    Etiketi anlama göre seçmek, erişilebilirlik ağacı ve `role` ile gelmeyen davranış.

  • 3ResearchWebAIM Million 2026

    Ana sayfalardaki en yaygın erişilebilirlik hataları ve ARIA kullanımıyla hata sayısı.

  • 4DocsMDN: Structuring documents

    `header`, `nav`, `main`, `article`, `section`, `aside`, `footer` tanımları ve `div` uyarısı.

  • 5DocsHTML Standard: Sections

    `article` ve `section` tanımı; `section`'ın genel kapsayıcı olmadığı.

  • 6Docsweb.dev: Headings and sections

    Landmark rolleri ve hangi `header`/`footer`'ın landmark olduğu.

  • 7DocsMDN: HTML, a good basis for accessibility

    `button` ve `div` farkı, başlıklar, `label`, `alt` ve link metni.

  • 8DocsMDN: `<h1>`–`<h6>`

    Seviye atlamamak, tek `h1` ve başlığı boyut için kullanmamak.

  • 9ArticleMarcy Sutton: Links vs. Buttons in Modern Web Applications

    Link başka kaynağa götürür, buton bulunulan sayfada işlem yapar.

  • 10VideoJen Luker: Button vs Div, What's the Big Deal Anyway? (React Summit 2020)

    12 dakika. `div`'i erişilebilir butona çevirmek için gereken role, tabindex ve olay işleyicileri.

  • 11Docsweb.dev Learn Forms: Accessibility

    Her form kontrolünün `label`'ı olmalı.

  • 12DocsW3C WAI: An alt Decision Tree

    `alt` metni ne zaman boş, açıklayıcı ya da işlevsel olur.

  • 13DocsW3C: Using ARIA

    ARIA'nın ilk kuralı: önce yerel HTML elementi.

  • 14Docsweb.dev: Learn HTML

    Baştan sona ücretsiz HTML kursu.

  • 15DocsMDN: HTML elements reference

    Tüm elementler işlevine göre gruplanmış.

  • 16DocsNu Html Checker

    W3C'nin HTML doğrulayıcısı.

  • 17VideoMarcy Sutton: The Links vs Buttons Showdown (SmashingConf SF 2017)

    Link ve buton seçimi, form özellikleri ve ARIA.

Edit this page

Last updated: October 17, 2026

Previous step02. Terminal ve npmNext step04. CSS