[17-4] ナビゲーションのセクションを表す nav要素
最終更新日:2017年11月01日 (初回投稿日:2011年07月19日)
<nav>要素も HTML5からの新要素です。
<article> <aside> <section> と同じく「セクショニング・コンテント」というカテゴリーに属しています。
( <article> <aside> <section> については [17-2] で解説しています。)
「セクショニング・コンテント」に属する要素は「アウトライン」を持ちます。
ここで言うアウトラインとは、概要・あらすじって意味ではなく、文字通り「外郭」みたいなかんじ。ひとまとまりの関連性のコンテナ的なものになるという意味です。
<nav>要素で囲むと「ナビゲーションとしての意味を持つセクション」になります。
「nav」は「navigation(ナビゲーション)」の略です。
「nav」は「ナヴ」って読むべきなんでしょうが、「ナビ」って読んじゃってます。
ちなみに NAV(ナヴ)だと証券用語で、投資信託の純資産(Net Aseet Valueの略)
ここでの「ナビゲーション」とは、同じページの他の部分や、他のページに移動するためのリンクテキストのセットのこと。
ナビゲーションには リンクテキストが複数あるので、それら1つひとつを <li>要素でリストとしてまとめるのが一般的です。
使用する要素 | <nav> 〜 </nav> |
---|
●
2017年10月: [17-1] 〜 [17-6] は本文を大幅に書き換えました。
初回投稿時の 2011年は HTML5はまだ策定中で、ルールが現仕様と若干異なっていました。それを今回 HTML5.1 の勧告内容に沿って修正しています。
それに伴い [17-1] 〜 [17-6] は、タイトルや内容を変更しているものもあります。ご了承ください。
<nav>は同じページ内に複数あってもOK
ナビゲーションには、サイト全体に対する「グローバル・ナビゲーション」や、そのページ内だけの「ページ内ナビゲーション」などがあります。
<nav>要素は どっちにも使えるので、同じページ内に複数あってもOKです。
このサンプルも、「グローバル」と「ページ内」のナビがあります。
(クリックで別ウィンドウでサンプルが開きます)
サンプルのソースの抜粋です。
<body>
<header>
<h1><a href="#">Site Title</a></h1>
<nav>
<h2>グローバルナビゲーション</h2>
<ul>
<li><a href="#">CONCEPT</a></li>
<li><a href="#">SERVICE</a></li>
<li><a href="#">HISTORY</a></li>
<li><a href="#">ABOUT US</a></li>
</ul>
</nav>
</header>
<main>
<div id="eyeCatcher"> <!--アイキャッチ部分です。画像などを入れたり-->
<h2>Sectioning Content Elements</h2>
<p>
<a href="#sec1-1"><article></a>
<a href="#sec1-2"><aside></a>
<a href="#sec1-3"><section></a>
<a href="#sec1-4"><nav></a>
</p>
</div><!--END #eyeCatcher-->
<div id="container"> <!--フロートで並べるための親要素です-->
<article> <!--メインコンテンツを囲みます-->
...略...
</article>
<aside> <!--サブ的なコンテンツを囲みます-->
<nav>
<h3>ページ内リンク</h3>
<ul>
<li><a href="#sec1">セクショニング・コンテント要素</a>
<ul>
<li><a href="#sec1-1">article</a></li>
<li><a href="#sec1-2">aside</a></li>
<li><a href="#sec1-3">section</a></li>
<li><a href="#sec1-4">nav</a></li>
</ul>
</li>
<li><a href="#sec2">セクションと見出し</a>
<ul>
<li><a href="#sec2-1">見出しのレベルで暗示的にセクションができる</a></li>
<li><a href="#sec2-2">セクション要素と見出しで明示的に</a></li>
</ul>
</li>
</ul>
</nav>
</aside>
</div><!--END #container-->
</main>
最初の <nav>要素(4〜12行)は「グローバル・ナビゲーション」。サイト内の他の主要なページへのナビゲーションです。(サンプルなのでジャンプしませんけどね)
2番目(32〜50行)は「ページ内ナビゲーション」です。
このほかに、「eyeCatcher」という id名の <div>(17〜25行)の中にも、ページ内へのリンクはありますが、これはサブタイトルにユーザビリティのためにリンクを貼っただけなので、<nav>要素は使いませんでした。
CSS無しのときに グローバルナビゲーション だと知らせる工夫
上のサンプルのHTMLファイルを CSS無しで見るとこうなります。
(クリックで別ウィンドウで開きます)
最初の <nav>要素の部分に「グローバルナビゲーション」と大きく表示されているのがわかるでしょうか。
これは <h2>要素。普段は CSSで この <h2> を display: none で非表示にしています。
音声読み上げソフト(スクリーンリーダー)のときは、「グローバルナビゲーション」と読み上げてから ナビゲーションが続きます。
アクセシビリティのための、わりと一般的な工夫です。
リンクなら何でも <nav> で囲むってわけじゃない
特にナビゲーション的な意味を持ってないと思われるリンクのセットなら <nav>要素を使う必要はありません。
サイトのフッターに、ちょっとしたリンク(会社案内・プライバシーポリシー・お問い合わせへとか)を入れたりしますが、この場合は <footer>要素だけで十分です。
*このときも <nav>要素を使うことはできるけど、あんまり意味無いと仕様書にありました。
下記は W3C HTML5.1 仕様書 にあったサンプルソースの抜粋。フッター部分です。
フッターの中に リンクのセットがありますが、<p>要素で囲んであるだけですね。
<footer>
<p>Copyright ©
<span property="schema:copyrightYear">2010</span>
<span property="schema:copyrightHolder">The Example Company</span>
</p>
<p><a href="about.html">About</a> -
<a href="policy.html">Privacy Policy</a> -
<a href="contact.html">Contact Us</a></p>
</footer>
</body>
<footer>に けっこうな量のリンクが入るなら、<nav>要素でマークアップしたほうが効果的です。
[17-5] ヘッダーの header、フッターの footer、連絡先の address要素 の <footer>のサンプルをご覧ください。
<nav> の中はリストじゃなくてもいい
<nav>要素は、中が必ずリストじゃなきゃってわけでは無いそうです。
下記も W3C HTML5.1 仕様書 にあったサンプルです。
文章の中にリンクが複数あるんですが、その文章全体をナビゲーションにしています。
こんな使い方もOKなんですね。
<nav>
<h2>Navigation</h2>
<p>You are on my home page. To the north lies <a href="/blog">my
blog</a>, from whence the sounds of battle can be heard. To the
east you can see a large mountain, upon which many <a href="/school">
school papers</a> are littered. Far up thus mountain
you can spy a little figure who appears to be me, desperately
scribbling a <a href="/school/thesis">thesis</a>.</p>
<p>To the west are several exits. One fun-looking exit is labeled
<a href="https://games.example.com/">"games"</a>. Another more
boring-looking exit is labeled <a
href="https://isp.example.net/">ISP™</a>.</p>
<p>To the south lies a dark and dank <a href="/about">contacts
page</a>. Cobwebs cover its disused entrance, and at one point you
see a rat run quickly out of the page.</p>
</nav>
次回予告
次回は、HTML5 からの新要素 <header> <footer> についてまとめます。
そして <address>要素についても、これはHTML5 から ちょっと役割が変わっています。
- 関連記事
-
- [18-5] 水玉、ボーダー、チェック柄を作ろう(background-size)
- [18-4] 円形(放射)グラデーションを作ろう (radial-gradient)
- [18-3] テキストにシャドウをつけよう(text-shadow)
- [18-2] 要素にシャドウをつけよう(box-shadow)
- [18-1] 要素を角丸にしよう(border-radius)
- [17-6] メインコンテンツを表す main要素
- [17-5] ヘッダーの header、フッターの footer、連絡先の address要素
- [17-4] ナビゲーションのセクションを表す nav要素
- [17-3] セクショニング要素と見出し要素のルール
- [17-2] セクショニングの article要素、aside要素、section要素
- [17-1] HTML5 の新要素でページ全体を組もう
- (ちょっとメモ)テーブルをレスポンシブ対応させるCSS
- [16-7] テーブルセルで使う scope属性と headers属性について
- [16-6] table縦列グループ化( colgroup, col )
- [16-5] table横列グループ化(thead, tbody, tfoot)
初心者にも使いやすい(と思う)レンタルサーバー
「初心者ですがレンタルサーバーはどこがいい?」というご質問をよくいただきます。
自由にファイルをアップロードできる自分のサーバがあると便利ですよね。ローカル環境じゃなくサーバ上で試してみたい時がありますからね。
私が使っているのは、
スターサーバーや ロリポップ!
です。どちらも管理画面がわかりやすく、マニュアルも充実していて、料金も安い。どちらもライトプラン以上で WordPress が使えます。
初心者が始めやすいサーバだと思います。
ちょっと料金は高いけど、さくらのレンタルサーバや、エックスサーバー
は、やはり老舗なのでおすすめです。
両方とも高スペックでコスパが良く、老舗でユーザーが多いので、質問する場がたくさんあります。初心者だけど仕事でサーバが欲しい場合は、安心なのではないかと思います。
スポンサーリンク
コメントの投稿
見出しの順番
順番に使わなくてはいけないと思っていたのですが、どうなんでしょうか?
Re: 見出しの順番
見出しの順番は、HTML5 から、数字の順じゃなくても良いらしい。
HTML5 から「暗示的セクション」という概念があるからだそうで。
私も、最初に調べたとき、へーって思いました。
でも、自分的にややこしくなりそうなので、今までどおり数字順に使ってますけど(笑)。
「暗示的セクション」については、「[17-3] セクションと見出しのルール」
http://honttoni.blog74.fc2.com/blog-entry-63.html
に書いといたので、見てみてください。