Menu

HTML nav Etiketi: Gezinme Çubukları, Menüler ve Breadcrumb

<nav> elementi başlıca gezinme linklerinden oluşan bir bloğu işaretler. <nav> ve bir listeyle gezinme çubuğu yapmayı, geçerli sayfayı işaretlemeyi, bir sayfadaki birkaç nav'ı etiketlemeyi ve mobil menü açma kapama butonu yapmayı öğren.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Menünü <nav> ile sar ve linkleri bir listeye koy. Flexbox listeyi yatay bir çubuğa çevirir:

list-style: none ve padding: 0 madde işaretlerini ve girintiyi kaldırır. Her linkteki display: block, padding'inin çubukta gerçek yer kaplamasını sağlar, böylece padding'li kutunun tamamı tıklama hedefi olur. display: flex satırını sil, aynı menü dikey bir listeye dönüşür; bir kenar çubuğu menüsü de böyle görünür.

<nav> kendisi hiçbir şeye benzemez. Görevi anlamdır: ekran okuyucular onu bir navigation landmark'ı olarak sunar, böylece kullanıcı tek bir tuşla menüye ya da onun ötesine atlayabilir.

Geçerli sayfayı işaretle

Gösterilen sayfanın linkine aria-current="page" ekle. Ekran okuyuculara "buradasın" der ve CSS'e linki vurgulamak için bir tutamak verir:

aria-current="page" değerini başka bir linke taşı, vurgu onu takip eder. Bir .active class'ı yerine özelliğe stil vermek görünümü ve erişilebilirliği senkronize tutar: biri olmadan diğerine sahip olamazsın.

Bir sayfada birkaç nav: label'lar ve breadcrumb

Bir sayfanın her biri kendi <nav> elementinde bir ana menüsü, bir breadcrumb'ı ve bir içindekiler tablosu olabilir. Her birine bir aria-label ver, böylece bir ekran okuyucu üç aynı "navigation" girişi yerine "Breadcrumb navigation" duyurur:

Breadcrumb'lar sıra önemli olduğu için sıralı bir <ol> listesi kullanır. Eğik çizgiler CSS ::before ile gelir, bu yüzden ekran okuyucular her öğenin arasında "slash" okumaz. Son öğe geçerli sayfadır ve link değildir.

Bir içindekiler tablosu

Aynı sayfanın bölümlerine giden linklerden oluşan bir liste de gezinmedir. #id linkleri o id'ye sahip elemente atlar; önizlemede dene:

Burada label, aria-labelledby ile görünür bir başlıktan gelir; başlık zaten ekrandayken bu, aria-label kullanmaktan daha iyidir.

Mobil menü açma kapama butonu

Dar ekranlarda menüler genellikle bir butonun arkasına gizlenir. aria-expanded olan gerçek bir <button> kullan ve linkleri <nav> içinde tut:

aria-expanded bir ekran okuyucuya menünün açık olup olmadığını söyler, hidden özelliği de liste kapalıyken onu hem ekrandan hem de erişilebilirlik ağacından kaldırır. Geniş ekranlarda listeyi bir media query ile gösterir ve butonu gizlersin.

Sık yapılan hatalar

  • Her link grubunu <nav> ile sarmak. Onu ana menü, breadcrumb, sayfalama ve içindekiler tabloları için kullan. Metin içindeki linkler gezinme blokları değildir.
  • Bir <div> ile yapılmış menü butonu. Klavyeyle odaklanamaz ya da basılamaz. <button> kullan.
  • Label'sız birkaç nav. Birbirinden ayırt edilebilsinler diye her birine aria-label ya da aria-labelledby ekle.
  • Geçerli linki yalnızca renklendirmek. aria-current="page" ekle; renk tek başına duyurulmaz ve herkes tarafından görülemeyebilir.
  • Yayındaki sitede href="#" olan linkler. Bir demoda sorun değildir, ama gerçek menü öğelerinin yeni sekmede açıldıklarında da çalışmaları için gerçek URL'lere ihtiyacı vardır. href değerlerinin nasıl çalıştığını link verme sayfası anlatıyor.

Sıkça Sorulan Sorular

HTML'de nav etiketi nedir?

<nav>, site menüsü, içindekiler tablosu ya da breadcrumb gibi başlıca gezinme linklerinden oluşan bir bloğu saran semantik bir elementtir. Ekran okuyucular onu bir navigation landmark'ı olarak listeler, böylece kullanıcılar doğrudan ona atlayabilir.

nav içindeki linkler bir listede mi olmalı?

Yaygın ve iyi bir kalıptır: <li> öğelerinden oluşan bir <ul>, ekran okuyucuların menüde kaç link olduğunu duyurmasını sağlar. Doğrudan <nav> içindeki düz linkler de geçerlidir, örneğin yan yana iki ya da üç link için.

Her link grubu için bir nav elementi gerekir mi?

Hayır. <nav> elementini yalnızca başlıca gezinme blokları için kullan. Bir paragraftaki birkaç link ya da footer'daki kısa bir yasal linkler listesi buna ihtiyaç duymaz; çok fazla nav landmark'ı da her birini bulmayı zorlaştırır.

Yatay bir gezinme çubuğu nasıl yapılır?

Linkleri <nav> içindeki bir <ul> içine koy, sonra listeye display: flex; list-style: none; padding: 0; ve bir gap ver. Flexbox öğeleri yan yana dizer.

Bir navbar'da geçerli sayfa nasıl gösterilir?

Kullanıcının bulunduğu sayfanın linkine aria-current="page" ekle ve ona [aria-current="page"] seçicisiyle stil ver. Ekran okuyucular da onu böylece geçerli sayfa olarak duyurur.

Bir sayfada birden fazla nav olabilir mi?

Evet, örneğin bir ana menü, bir breadcrumb ve bir içindekiler tablosu. Ekran okuyucu kullananlar onları ayırt edebilsin diye her birine "Main" ya da "Breadcrumb" gibi farklı bir aria-label ver.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA