サイト内の他のページに繋がるリンクを並べたパーツです。マウスカーソルを重ねると背景色がグレーになるよう設定しています。
<nav> <ul> <li><a href="#">トップ</a></li> <li><a href="#">ガジェット</a></li> <li><a href="#">その他雑貨</a></li> <li><a href="#">過去の記事</a></li> <li><a href="#">よくある質問</a></li> <li><a href="#">お問い合わせ</a></li> </ul> </nav>/* ナビゲーションメニュー */ nav ul { margin: 0; padding: 0; list-style: none; } nav a { display: block; padding: 5px; color: black; font-size: 14px; text-decoration: none; } nav a:hover { background-color: #dddddd; } /* メニューを横に並べる */ nav ul:after { content: ""; display: block; clear: both; } nav li { float: left; width: auto; }
完成例上記のようにメニューっぽいものができたら完成です。マウスカーソルを重ねると色が変わるはずです。
メニューはHTMLのリスト(箇条書き)機能を使って <ul> と <li> で表示し、各項目には <a> でリンクを設定しています。全体は <nav> タグで1つのグループにまとめ、スタイルシートでデザインを指定しやすいようにしています。
なおHTMLだけの状態では、メニューは横ではなく縦に並びます。最終的にスタイルシートを使って横並びに変えます。
スタイルシートを適用する前の状態。
リストのマーク削除と文字のデザイン調整
標準ではリスト項目の先頭部分に黒丸がついたり、余計な余白がついたりしますが、それらを削除するために <ul> の margin と padding を「0」にし、list-type を「none」に設定しています。
また、リンクの文字色を黒色にし、文字サイズを14ピクセルに、下線を非表示にするために、<a> に対して color を「black」に、font-size を「14px」に、text-decoration を「none」にそれぞれ設定しています。
/* ナビゲーションメニュー */ nav ul { margin: 0; padding: 0; list-style: none; } nav a { color: black; font-size: 14px; text-decoration: none; }
マウスカーソルを重ねた際の効果
リンクにマウスカーソルを重ねた時に、背景色が変わるようにします。ここでは background-color を使って背景色をグレー(#dddddd)に設定しています。
なお通常の場合、カーソルを重ねてリンクが機能する範囲は、文字が書かれている部分のみとなっています。
/* ナビゲーションメニュー */ nav ul { margin: 0; padding: 0; list-style: none; } nav a { color: black; font-size: 14px; text-decoration: none; } nav a:hover { background-color: #dddddd; }
リンクが反応する範囲の調整
スマートフォンなどでもリンクをタップしやすいように、リンクが反応する範囲を大きくします。
display を「block」に設定すると、リンクが反応する範囲を横幅いっぱいにまで広げられます。また、リンクの内側に5ピクセルのパディングを設定し、リンクが反応する範囲を上下方向にも広げます。
/* ナビゲーションメニュー */ nav ul { margin: 0; padding: 0; list-style: none; } nav a { display:block; padding: 5px; color: black; font-size: 14px; text-decoration: none; } nav a:hover { background-color: #dddddd; }
リンクを横に並べる
縦並びで作ったリンクですが、画面に占める面積の関係上、横並びにしたいと思います。その場合も、スタイルシートを使って後から横並びに変更できます。具体的には、リンクを縦に並べる設定に、「ボックスを横に並べる」で行った設定を追加して作成できます。
この例の場合、HTMLのリスト(<ul>~</ul>)構造を使っているので、すでに <li> によって6つのボックスが作られており、それらを <ul> がグループ化している構造になっています。
よって、「ボックスを横に並べる」の設定を <ul> と <li> に置き換えて適用すれば、以下のように6つのボックスを横に並べられます。
なお、各リンクの幅はボックスの中身に合わせるため、<li> の width を「auto」に設定しています。/* ナビゲーションメニュー */ nav ul { margin: 0; padding: 0; list-style: none; } nav a { display: block; padding: 5px; color: black; font-size: 14px; text-decoration: none; } nav a:hover { background-color: #eeeeee; } /* メニューを横に並べる */ nav ul:after { content: ""; display: block; clear: both; } nav li { float: left; width: auto; }
メニューが横に並びました。