Semantik HTML nedir
Semantik (anlamsal) HTML, her etiketi içeriğin ne olduğuna göre seçmek demektir: gezinme <nav> içine, ana içerik <main> içine, bir blog yazısı <article> içine girer. Etiketler düz kutular gibi görünür, ama tarayıcıya, ekran okuyuculara ve arama motorlarına sayfanın her parçasının ne yaptığını söyler. İşte her biri çerçevelenmiş ve etiketlenmiş, semantik yerleşim etiketleriyle kurulmuş eksiksiz bir sayfa:
<style> elementini sil, sayfa düz metin gibi görünür, ama yapı hem kodu okuyan herkes hem de onu piksellere bakmadan okuyan yazılımlar için hâlâ oradadır.
Semantik yerleşim etiketleri
| Etiket | Ne için kullanılır | Ekran okuyucu landmark'ı |
|---|---|---|
<header> | Sayfanın ya da bir makalenin girişi: logo, başlık, yazar satırı | banner (yalnızca article, aside, main, nav ya da section içinde değilse) |
<nav> | Başlıca gezinme linklerinden oluşan bir blok | navigation |
<main> | Bu sayfaya özgü içerik, sayfada bir kez | main |
<article> | Kendi başına anlamlı, bağımsız bir parça: bir yazı, bir yorum, bir ürün kartı | varsayılan olarak yok |
<section> | Kendi başlığı olan, bir temaya ait içerik grubu | region, yalnızca erişilebilir bir adı varsa |
<aside> | Ana akışın yanındaki ilgili içerik: bir kenar çubuğu, bir not | complementary |
<footer> | Sayfanın ya da bir makalenin kapanış bilgileri: telif hakkı, yazar, linkler | contentinfo (yalnızca sayfa seviyesinde) |
Her etiketin daha fazla ayrıntı içeren kendi sayfası var: header, nav, section ve footer. Bu sayfa onların nasıl bir araya geldiğini anlatıyor.
Neden sadece div kullanılmamalı
Yalnızca <div> elementlerinden kurulmuş bir sayfa semantik olanla birebir aynı görünebilir. Fark, işaretlemenin ne söylediğidir. Her sürümde anlam taşıyan elementleri çerçevelemek için butonlara bas:
Div sürümü 0 bulur, semantik sürüm 4 bulur. Yardımcı teknolojilerin gördüğü budur: bir ekran okuyucu kullanıcısı semantik sayfada doğrudan gezinmeye ya da ana içeriğe atlayabilir, div sayfasında ise her şeyi baştan sona okumak zorunda kalır. class="nav" gibi class adları tarayıcı için hiçbir şey ifade etmez.
<div>, ilk örnekteki .cols flex sarmalayıcısı gibi yalnızca stil ya da yerleşim için var olan kutular için hâlâ doğru seçimdir.
main, article ve aside
<main> bu sayfaya özgü olanı sarar ve bir kez görünür. İçinde <article>, başka bir siteye tek başına kopyalandığında da anlamlı olacak içeriği; <aside> de ilgili olan ama makaleyi bozmadan çıkarılabilecek içeriği işaretler:
Makalenin kendi <header> ve <footer> elementleri var. Bunlar sayfa seviyesiyle sınırlı değildir: her biri en yakın makalesini ya da bölümünü açar veya kapatır. <time datetime> elementi, tarihi insanların okuyacağı biçimde gösterirken makinelerin okuyabileceği bir biçimde de verir.
Başlık ana hattını kontrol et
Başlıklar yapının diğer yarısıdır. Ekran okuyucu kullananlar bir sayfada çoğunlukla başlıktan başlığa ilerler, bu yüzden seviyeler, hiçbir seviye atlanmadan bir içindekiler tablosu gibi okunmalı. Bu script içinde çalıştığı sayfanın ana hattını yazdırır:
"Brewing" altındaki h4 bir seviye atlıyor. Onu h3 yap, ana hat düzgün okunur. Başlık seviyelerini yapıya göre seç, daha büyük ya da küçük olmalarını istiyorsan boyutlarını CSS ile değiştir.
Daha fazla semantik etiket
Semantik yalnızca yerleşimle ilgili değildir. Bu metin seviyesindeki etiketler de anlam taşır:
| Etiket | Anlamı |
|---|---|
<strong> | Önemli metin (varsayılan olarak kalın) |
<em> | Vurgulu metin (varsayılan olarak italik) |
<figure> ve <figcaption> | Açıklamasıyla birlikte bir resim, grafik ya da kod örneği |
<time datetime="..."> | Makinelerin okuyabileceği biçimde bir tarih ya da saat |
<address> | Sayfanın ya da makale yazarının iletişim bilgileri |
<mark> | Bir arama eşleşmesi gibi vurgulanmış metin |
<abbr title="..."> | Açılımıyla birlikte bir kısaltma |
<button> | Bir eylem gerçekleştiren şey |
Açılımını bir ipucunda görmek için "W3C" kısaltmasının üzerine gel.
Sık yapılan hatalar
- Bir etiketi görünüşü için kullanmak.
<blockquote>girinti için değil, alıntılar içindir;<h3>orta boyutlu kalın metin için değil, bir başlık seviyesi içindir. Stili CSS ile ver. - Her şeyi
<section>ile sarmak. Bir section'ın bir başlığı ve bir teması olmalı. Stil için bir kutuya ihtiyacın varsa<div>kullan. - Birden fazla görünür
<main>. Sayfa başına bir tane tut ve asla<article>,<aside>,<header>,<nav>ya da<footer>içine yerleştirme. - Her link listesini
<nav>içine koymak. Onu site menüsü ya da içindekiler tablosu gibi başlıca gezinme blokları için sakla. Bir footer'daki birkaç link buna ihtiyaç duymaz. - Tıklanabilir
<div>elementleri. Bir<div onclick>elementine klavyeyle ulaşılamaz. Eylemler için<button>, gezinme için<a href>kullan.
Sıkça Sorulan Sorular
Semantik HTML nedir?
Semantik HTML, her etiketin içeriğinin anlamını tarif ettiği işaretlemedir: gezinme için <nav>, kendi başına anlamlı bir parça için <article>, bir buton için <button>. Tarayıcı, ekran okuyucular ve arama motorları böylece sayfayı class adlarından ya da stillerden tahmin etmeden anlayabilir.
HTML'deki semantik etiketler nelerdir?
Yerleşim etiketleri <header>, <nav>, <main>, <article>, <section>, <aside> ve <footer> şeklindedir. Diğer yaygın semantik etiketler arasında <figure>, <figcaption>, <time>, <address>, <strong>, <em> ve <h1> ile <h6> arası başlıklar vardır.
div semantik bir element mi?
Hayır. <div> elementinin kendine ait bir anlamı yoktur; stil ve yerleşim için genel bir kutudur. Hiçbir semantik etiket uymadığında onu, biri uyduğunda da <header>, <main>, <nav> ve diğerlerini kullan.
aside etiketi ne için kullanılır?
<aside> ana içerikle ilgili ama onun akışının parçası olmayan içeriği tutar: bir kenar çubuğu, bir ilgili linkler kutusu, bir sözlük notu ya da bir alıntı. Sayfa seviyesinde ekran okuyucular onu complementary landmark olarak listeler.
Bir sayfada kaç tane main elementi olabilir?
Sayfa başına görünür tek bir <main>. O sayfaya özgü içeriği sarar ve <header>, <nav>, <article>, <aside> ya da <footer> içinde durmamalıdır.
Semantik HTML SEO'ya yardımcı olur mu?
Arama motorlarının sayfanın hangi kısmının ana içerik, hangisinin gezinme olduğunu ve başlıkların birbiriyle nasıl ilişkili olduğunu anlamasına yardım eder. Tek başına bir sıralama kestirmesi değildir, ama tahmin işini ortadan kaldırır ve zaten yapmaya değer olan erişilebilirliği iyileştirir.