<nav>内で<ul>と<li>を使用する必要がありますか?


114

タイトルはそれをかなり説明します。

専用の<nav>タグができたので、

これは:

<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>

以下より良いですか?

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

つまり、CSSのポジショニング/パディングに追加のDOMレベルが必要ない場合、どのような方法が推奨されますか?


それは良い質問です... HTML 4にとって意味のないタグを使用して、以前のベストプラクティスのいずれかが適用されますか?
グッファ

回答:


63

nav要素とリストは、異なる意味情報を提供します:

  • nav要素は、主要なナビゲーションブロックを扱っていることを伝えます

  • リストは、このナビゲーションブロック内のリンクがアイテムのリストを形成することを伝えます

http://w3c.github.io/html/sections.html#the-nav-elementあなたはNAV要素も散文を含む可能性のあることがわかります。

つまり、nav要素内にリストがあると意味が追加されます。


どうもありがとう、これが私が必要としたものです!また、以下の「3項目のリスト」を発表したスクリーンリーダーに関するrobertcのコメントは非常に役に立ちました。
kikito

7
ULタグは何の役にも立た
psycho brm '27

2
リンクは私のために働いているようです。リストを宣言し、ドローをリストしていないフォローアップを必ずお読みください。css-tricks.com/wrapup-of-navigation-in-lists
RobW

私の意見では、が<nav>ない<ul><li>と、より動的な子メニューが表示されるようです。タイプと位置が異なる複数のメニューリストがある場合はどうなります<nav>か?これらのメニューリストをのよう<ul><li>にグループ化します<nav>。だからあなたのメニューが定期的であれば、私は一緒に行き<ul><li>ます。
wonsuc

3

この時点では、<ul><li>すべてのブラウザーがまだHTML5タグをサポートしているわけではないため、要素を保持します。

たとえば、私はを使用して問題に遭遇しました <header>タグ -ChromeとFFは魅力のように機能しましたが、Operaは失敗しました。

すべてのブラウザがHTMLを完全にサポートするまで、私はそれらを使い続けますが、下位互換性のために古いブラウザに依存します。


3
HTML 5 Shim javascriptファイル(remysharp.com/2009/01/07/html5-enabling-script)を使用して、OperaやIEなどのブラウザーとの下位互換性の問題を軽減します。
acconrad 2011

しかし、あなたのサイトは邪魔にならないスクリプティングに友好的ではありません:)
Demian Brecht

1
IE8が市場に出るまで…2016年まで:)
untilime Vidas

@Šime-正確に:)そしてJavaScriptをオフにすることはブラウザのオプションではなくなりました;)
Demian Brecht

@ Agent_9191それは-IE7をまだ何人使用しているかを確認したいと思った今日、私は完全に驚いています-ほとんどの国では、IE7よりもOperaやiPadのサファリなどのブラウザーに多くの人々がいます。IE7のサポートを終了できてとても嬉しいです。そしてIE8は遅かれ早かれなくなるでしょう。これは私たちが直面しなければならない最後の頑固なブラウザーです(IE9はコード化にそれほど悪くありません)。
Camilo Martin

2

本当にあなた次第です。通常、順序付けられていないリストを使用してナビゲーションメニューをマークアップしている場合は、<nav>要素内でこれを続けます。<nav>要素のポイントは、たとえばコンピューターリーダーへのサイトのナビゲーションを識別することです。そのため、リストを使用するか、単にリンクを使用するかは重要ではありません。


+1は、スクリーンリーダーの場合、navsとasがリストと同じくらい優れていることを述べたためです。
Camilo Martin

2

私にとって、順不同リストは余分なマークアップであり、実際には必要ありません。HTML文書を見るときは、できるだけ簡潔で読みやすいものにしてください。適切なインデントが使用されている場合、リストが表示されていることは視聴者にはすでに明らかです。したがって、これらのaタグにULを追加する必要はなく、ドキュメントを読みにくくします。

ある程度の柔軟性は得られますが、セマンティックでないulクラスでマークアップを膨らませず、a要素を一気にスタイル設定することをお勧めします。また、言い訳はありません。:beforeおよび:after疑似セレクターを使用してください。

編集:一部のARIAスクリーンリーダーはリストを単純なアンカータグとは異なる方法で処理することを認識しました。あなたのウェブサイトが身体障害者向けである場合、リストベースのアプローチを使用することを検討するかもしれません。


1

いいえ、同等です。HTML 5はHTML 4リストと下位互換性があるため、同じ点で自由に使用できます。トレードオフは、第2バージョンのコードが少ないことです。

ブラウザに関する下位互換性が心配な場合は、このシムを含めて<nav>、およびなどのタグの機能を提供してください<article>


8
リンクのリストは、追加のセマンティクスとアクセシビリティを提供します(たとえば、ナビゲーションに入ると、スクリーンリーダーが「3つのアイテムのリスト」をアナウンスします)。
robertc

@robertcスクリーンリーダーのポイントはとても良いものです。あなたは答えにそれを置くべきでした!私はそれを正しいとマークしたでしょう。いずれにしても+1。
kikito

1

私たちが「本によって」話しているなら、いいえ。ナビゲーションをマークアップするためにリストを使用する必要はありません。彼らが提供する唯一の本当の利点は、スタイリング時に柔軟性を向上させることです。


1

私は維持したい<ul><li>新しいタグは(ので、タグ<nav><section><article>などが)のちょうどより多くの意味的なバージョンがあります<div> sの。

同じ理由で、に大量のリンクを配置するだけでなく<div><nav>タグ内でも構造化する必要があります。


過去に<div>で多数のリンクの代わりに<ul>を使用した理由は、正確に<ul>の方がセマンティックだったからです。しかし、今では<nav>はよりセマンティックになっています。よくわかりません。
kikito

2
<ul>はプレーンな<a>リンクよりもセマンティックですが、<nav>は<div>よりセマンティックです。<ul>対<a>は<nav>対<div>とは別です
whostolemyhat

セマンティクスを気にしないことは、HTMLを書くときに行く方法ではありません
Andrew Marshall、

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.