HTML5では、メインナビゲーションを<header>要素の内側または外側に配置する必要がありますか?


167

HTML5では、<nav>ページのマストヘッド<header>要素の内部でも外部でも使用できます 。セカンダリナビゲーションとメインナビゲーションの両方を備えたウェブサイトでは、メインナビゲーションをマストヘッド要素の外側の要素として、セカンダリナビゲーションを<nav>マストヘッド<header>要素内の要素として含めるのが一般的のようです。ただし、ウェブサイトにセカンダリナビゲーションがない場合、マストヘッド要素内の要素にメインナビゲーションを含めるのが一般的です。<nav><header><nav><header>

これらの例に従っている場合、私のコンテンツ構造は、2次ナビゲーションの包含または除外に基づいています。これにより、コンテンツとスタイルの結合が導入され、不必要で不自然に感じられます。

<header>セカンダリナビゲーションの包含または除外に基づいて、メインナビゲーションをマストヘッド要素の内側から外側に移動しないようにするためのより良い方法はありますか?

メインおよびセカンダリナビゲーションの例

<header>
    <nav>
        <!-- Secondary Navigation inside <header> -->
        <ul>
            <li></li>
        </ul>
    </nav>
    <h1>Website Title</h1>
</header>
<nav>
    <!-- Main Navigation outside <header> -->
    <ul>
        <li></li>
    </ul>
</nav>

OnlineDegrees.orgは、上記のパターンに従うサンプルサイトです。

ここに画像の説明を入力してください

メインのみのナビゲーションの例

<header>
    <h1>Website Title</h1>
    <nav>
        <!-- Main Navigation inside <header> -->
        <ul>
            <li></li>
        </ul>
    </nav>
</header>

Keyzo.co.ukは、上記のパターンに従うサンプルサイトです。

ここに画像の説明を入力してください

HTML5の紹介からの抜粋-02-Feb-11、7:38 AMに追加

Bruce LawsonとRemy Sharpによる HTML5の紹介では、この件について次のように述べています。

ヘッダーにはナビゲーションを含めることもできます。これは、サイト全体のナビゲーション、特に<header>要素全体がテンプレートファイルから取得できるテンプレート駆動型のサイトで非常に役立ちます。

もちろん、いることを必須ではありません<nav>になります<header>

サイト全体のナビゲーションがサイト全体のヘッダーに属していると信じるかどうか、またスタイル設定の容易さに関する実用的な考慮事項に大きく依存します。

その最後の文に基づいて、ブルース・ローソン(これらの抜粋の出典の章の著者)は、「スタイリングの容易さに関するプラグマティックな考察」がコンテンツとスタイルのカップリングをもたらすことを認めているようです。


1
それはあなたのウェブサイトのデザインに完全に依存します。Twitterを例にとると、彼らのホームページ(ログインする前に表示されるページ)にはトップナビゲーションがありません。彼らのすべての「メインメニュー」のものはページの一番下にあります。さて、あなたのことは知りませんが、それをヘッダーと呼ぶつもりはありません...
uSeRnAmEhAhAhAhAhA

回答:


84

それは完全にあなた次第です。それらの要素を内部のナビゲーション要素のみ(つまり、TwitterやFacebookのアカウントなどの外部サイトにリンクしない)である限り、それらをヘッダーに配置するかどうかを指定できますが、問題はありません。

ヘッダーが配置される傾向があるのは、それがナビゲーションがよく行われる場所だからです。

詳細については、HTML5 Doctorを参照してください


5
「その中の要素が内部のナビゲーション要素のみである限り(つまり、TwitterやFacebookのアカウントなどの外部サイトにリンクしない限り)、それで問題ない」と述べるのはなぜですか?
マシューランキン

7
@Matthewは、nav要素がそのサイト内のみのナビゲーション用であるためです。はっきりしていたのがすべてです。
Ian Devlin、2011

@MatthewRankin <nav>要素内のアンカーをクリックすると、まったく異なるナビゲーションの新しいページに送信されるだけで、どのような衝撃を受けるでしょう。自分のサイトとは関係のない外部サイトへのアンカーの場合はrel="nofollow"、リンクの属性も覚えておいてください。
Anthony Rutledge

私はこれが古いことを知っています...サブドメインへのリンクはどうですか?たとえば、異なるサイト(プレゼンテーションサイト、サービスサイト、認証サイトなど)があるWebサイトは、すべて構造が異なります。私がやっていることは、<nav>要素内ではなく要素内にそのリンクを配置し<ul>、メインのナビゲーションリストの一部ではない方法でそれをスタイル設定することです。モバイルバージョンを除いて、リンクは同じリストに表示する必要があります...とにかくボタンは、どこかに行っていることを知るのに十分な説明です...
Chazy Chaz

5

あなたが意見を求めているのかどうかは、少し不明確です。「xxxをするのが一般的」または実際のルールなので、ルールの方向に傾けます。

引用する例は、nav要素の仕様の例に基づいているようです。仕様は次第に調整され続け、ルールが複雑になることもあることを忘れないでください。そのため、多くの人々は、解釈するのではなく、与えられたものを実行する傾向があるかもしれません。動作が異なる2つの別々の例を示しているため、読み込めるのは非常に限られています。これらのサイトのどちらにも反対のサブ/ナビゲーション状況がありますか?その場合、どのように処理しますか?

最も重要なことは、しかし、どちらかと言うスペックでは何もありませんそれを行う方法は。HTML5の目標の1つは、セマンティクス、要件などについて非常に明確にすること(これは比較のため)であるため、省略したことは注目に値します。私が見る限り、例は互いに独立しており、レイアウト要件などのコンテキスト内で等しく有効です。

navのソース位置を条件付きにすることは、愚かなことです(別の赤い旗)。方法を選んでそれを実行するだけです。


4

ヘッダーにナビゲーションを入れるのは好きではありません。私の推論は:

論理

ヘッダは、ドキュメントに関する入門情報が含まれています。NAVは、他のドキュメントへのリンクメニューです。私の考えでは、これはナビゲーションのコンテンツがドキュメントではなくサイトに属していることを意味します。例外は、NAVがフォワードリンクを保持していた場合です。

アクセシビリティ

ソースコードの最初ではなく最後にメニューを配置するのが好きです。CSSを使用してコンピューター画面の上部に送信するか、テキスト読み上げブラウザーや小さな画面の場合は最後に残します。これにより、スキップリンクの必要がなくなります。


2
スキップリンクはメニューをスキップするオプションを提供しますが、最後に置くことはスキップしない(つまり、ナビゲートする)オプションを提供しないことに注意してください-したがって、適切にナビゲートできるようになるまで、最後まで待機する必要があります。 、 正しい?
Julix

2
@julixのポイントで続行するには、ナビゲーションを最後に配置しますが、最初にそれをレンダリングすると、視覚障害のあるユーザーがドキュメントをタブで移動するのが難しくなります。
Jason T Featheringham

3

@IanDevlinは正しいです。MDNのルールは次のように述べています

"HTMLヘッダー要素" "は、ページヘッダーを定義します。通常、サイトのロゴと名前、および場合によっては水平メニューが含まれます..."

「多分」という言葉が鍵。さらに、ヘッダーは必ずしもサイトヘッダーである必要はありません。たとえば、ポップアップモーダルまたはヘッダーがあるドキュメントの他のモジュール部分に「ヘッダー」を含めることができ、スクリーンリーダーのユーザーがそれを知っていると役立ちます。

これは、NAVの暗黙的な使用に関する用語です。グループ化されたサイトナビゲーションがある場所ならどこでも使用できますが、通常、ミニナビゲーション/重要なサイトリンクの「フッター」セクションからは省略されます。

本当にそれは個人/チームの選択に帰着します。あなたとあなたのチームが何をより意味的で重要であると感じているかを決定し、一貫性を保つようにしてください。私にとって、ナビゲーションがロゴとメインサイトの「h1」に沿っている場合、それを「ヘッダー」に入れるのは理にかなっていますが、異なるデザインの選択肢がある場合は、ケースバイケースで決定します。

最も重要なことは、ドキュメントをチェックして、その特定の決定を行う理由を理解することを省略または含めることを選択したかどうかを確認してください。


2

@JoshuaMaddoxの発言をさらに詳しく説明するために、MDNラーニングエリアの[HTMLの概要]セクションの[ ドキュメントとWebサイトの構造]サブセクションには、次のように記載されています(太字/強調は私が作成したものです)。

ヘッダ

通常、上部に大きなストリップと大きな見出しまたはロゴ、あるいはその両方が付いています。これは、Webサイトに関する主な共通情報が通常、あるWebページから別のWebページに留まる場所です。

ナビゲーションバー

サイトのメインセクションへのリンク。通常、メニューボタン、リンク、またはタブで表されます。ヘッダーと同様に、このコンテンツは通常、あるWebページから別のWebページに一貫性を保ちます— Webサイト上で一貫性のないナビゲーションを使用すると、混乱してイライラするユーザーにつながるだけです。多くのWebデザイナーは、ナビゲーションバーを個々のコンポーネントではなくヘッダーの一部と見なしていますが、これは必須ではありません。実際、スクリーンリーダーは2つの機能が分離されていると読みやすいため、2つを分離する方がアクセシビリティに優れていると主張する人もいます


1
<nav>ページ内で浅く構造化<nav>されているは、より深くネストされているよりもアクセスしやすい場合があることに同意します。しかし、その判断はどのような根拠で行われていますか?とにかく、スクリーンリーダーは<nav><a>タグで家に帰ります。重要な要素は、HTMLの構造的な順序です。次は、応答性です。プライマリ<nav>(または<nav>)を直接の子に<body>すると、操作が簡単になりますか?それは有効なHTMLですか?A <nav>セクショニングコンテンツであるため、などのセクショニングルート内での使用に適しています<body>。W3C HTML5を参照してください
Anthony Rutledge 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.