<nav> ’larımın içinde <ul>’ leri ve <li> ’leri kullanmalı mıyım?


114

Başlık bunu hemen hemen açıklıyor.

Artık özel bir etiketimiz olduğuna göre <nav>,

Bu:

<nav>
  <ul>
    <li><a href="#foo">foo</a></li>
    <li><a href="#bar">bar</a></li>
    <li><a href="#baz">baz</a></li>
  </ul>
</nav>

aşağıdakilerden daha iyisi var mı?

<nav>
  <a href="#foo">foo</a>
  <a href="#bar">bar</a>
  <a href="#baz">baz</a>
</nav>

Demek istediğim, bazı CSS konumlandırma / dolgusu için fazladan bir DOM seviyesine ihtiyacım olmadığını varsayarsak, tercih edilen yol nedir ve neden?


Bu iyi bir soru ... HTML 4 için bir anlam ifade etmeyen etiketlerle, önceki en iyi uygulamalardan herhangi biri geçerli mi?
Guffa

Yanıtlar:


63

nav öğesi ve liste farklı anlamsal bilgiler sağlar:

  • Gezinme öğesi, büyük bir gezinme bloğuyla uğraştığımızı bildiriyor

  • Liste, bu gezinme bloğunun içindeki bağlantıların bir öğe listesi oluşturduğunu bildirir

At http://w3c.github.io/html/sections.html#the-nav-element Bir nav elemanı da düzyazı içerebilir görebilirsiniz.

Yani evet, bir nav öğesinin içinde bir listeye sahip olmak anlam katıyor.


Çok teşekkürler, ihtiyacım olan buydu! Ayrıca, robertc'in aşağıdaki "3 öğelik liste" ni duyuran ekran okuyucularla ilgili yorumu çok faydalı oldu.
kikito

7
UL etiketi hiçbir şeye yardımcı olmuyor gibi görünüyor: css-tricks.com/navigation-in-lists-to-be-or-not-to-be
psycho brm

2
Bağlantı benim için çalışıyor gibi görünüyor. Listeleri açıklayan ve çekiliş içermeyen takibi okuduğunuzdan emin olun. css-tricks.com/wrapup-of-navigation-in-lists
RobW

Bence, bir <nav>olmadan <ul><li>daha dinamik çocuk menüleri olacak gibi görünüyor. Farklı türde ve <nav>? Konumunda konumlandırılmış birden fazla menü listeniz varsa ne olur ? Benim yerimde grup olarak bu menü listeleri <ul><li>içinde <nav>. Senin menüler düzenli varsa Yani, birlikte gider <ul><li>.
wonsuc

3

Bu noktada, <ul><li>tüm tarayıcıların henüz HTML5 etiketlerini desteklememesinin nedeni , öğeleri saklayacağım .

Örneğin, <header>etiketini kullanarak bir sorunla karşılaştım - Chrome ve FF bir cazibe gibi çalıştı, ancak Opera boğuldu.

Tüm tarayıcılar HTML'yi tamamen destekleyene kadar, onları yapıştırırdım, ancak geriye dönük uyumluluk için eskilere güvenirim.


3
Opera ve IE gibi tarayıcılarla olası geriye dönük uyumluluk hatalarını azaltmak için HTML 5 Shim javascript dosyasını ( remysharp.com/2009/01/07/html5-en enable-script ) kullanın.
acconrad

Ancak siteniz rahatsız edici olmayan komut dosyalarına uygun değil :)
Demian Brecht

1
Yani IE8 piyasadan çıkana kadar ... 2016'ya kadar olduğu gibi ...:)
Šime Vidas

@ Šime - tam olarak :) Ve Javascript'i kapatmak artık tarayıcılarda bir seçenek değil;)
Demian Brecht

@ Agent_9191 olacak - Bugün hala IE7'de kaç kişinin olduğunu kontrol etmek ve tahmin etmek istediğimde tamamen şaşırdım - çoğu ülkede Opera veya iPad safari gibi tarayıcılarda IE7'den daha fazla insan var. Artık IE7 desteğini bırakabildiğim için çok mutluyum! Ve IE8 er ya da geç ortadan kalkacak. Karşılaşmamız gereken son inatçı tarayıcı (IE9'a karşı kod yazmak o kadar da kötü değil).
Camilo Martin

2

Gerçekten size kalmış. Gezinme menünüzü işaretlemek için genellikle sırasız bir liste kullandıysanız, <nav> öğesi içinde bunu yapmaya devam edin derim. <nav> öğesinin amacı, sitenin gezinmesini örneğin bir bilgisayar okuyucusuna tanımlamaktır, bu nedenle bir liste veya basitçe bağlantılar kullanmanız önemsizdir.


Çünkü ekran okuyucular için, söz +1 navs ve aŞimdilik sadece listeleri gibi iyiliği gibidir.
Camilo Martin

2

Benim için sırasız listeler, gerçekten gerekli olmayan fazladan işaretlemedir. Bir HTML belgesine baktığımda, olabildiğince temiz ve okunması kolay olmasını istiyorum. İzleyici, uygun girinti kullanılırsa bir listenin sunulduğu zaten açıktır. Bu nedenle, bu etiketlere UL eklemek gereksizdir ve belgenin okunmasını daha zor hale getirir.

Biraz esneklik kazanmış olsanız da, anlamsız ul sınıflarıyla işaretlemeyi şişirmemenin ve a öğelerini tek bir hamlede biçimlendirmenin daha iyi bir fikir olduğuna inanıyorum. Ve hiçbir mazeretiniz yok: sözde seçicilerden önce ve: sonra kullanın.

Düzenleme : Bazı ARIA ekran okuyucularının listeleri basit bağlantı etiketlerinden farklı şekilde ele aldığı konusunda bilgilendirildim. Web siteniz engelli kişilere yönelikse, listeye dayalı yaklaşımı kullanmayı düşünebilirim.


1

Hayır, eşdeğerler. Unutmayın, HTML 5, HTML 4 listeleriyle geriye doğru uyumludur, bu nedenle bunları aynı şekilde kullanmakta özgürsünüz. Takas, 2. sürüm için daha az koddur.

Tarayıcılarla ilgili geriye dönük uyumluluk konusunda endişeleriniz varsa , ve gibi etiketlerin işlevselliğini sağlamak için bu şimi eklediğinizden emin olun .<nav><article>


8
Bir bağlantı listesi, ek anlamlar ve erişilebilirlik sağlar (örneğin, ekran okuyucular, navigasyona girdiğinizde 'Üç öğenin listesi'ni duyurur).
robertc

@robertc Ekran okuyucunun bakış açısı çok iyi. Bir cevaba koymalıydın! Doğru olarak işaretlerdim. Her durumda +1.
kikito

1

"Kitaba göre" konuşuyorsak, hayır; navigasyonunuzu işaretlemek için listeleri kullanmanız gerekmez. Sundukları tek gerçek avantaj, şekillendirme sırasında daha iyi bir esneklik derecesi sağlamaktır.


1

Ben devam ederdim <ul><li>yeni etiketler (çünkü etiketleri <nav>, <section>, <article>vb) sadece daha fazla anlamsal sürümleridir <div>s.

Aynı nedenden ötürü, a'da bir sürü bağlantıya sahip olmayacağınız gibi <div>, bunlar da bir <nav>etiket içinde yapılandırılmalıdır .


Geçmişte bir <div> 'de çok sayıda bağlantı yerine <ul>' leri kullanmamın nedeni, tam olarak <ul> 'lerin daha anlambilimsel olmasıydı. Ama şimdi <nav> daha anlamsal. Kafam karıştı.
kikito

2
<ul> 'ler, düz <a> bağlantılarından daha anlamsaldır, ancak <nav>, <div>' den daha anlamsaldır. <ul> - <a> arası <nav> - <div> arasında ayrı
whostolemyhat

Anlambilimle ilgilenmemek, HTML yazarken gidilecek yol değildir .
Andrew Marshall

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.