グローバルナビの作り方(ブロック版)

ブロック要素を利用したグローバルナビ用のCSSの設定方法をサンプルを用いて解説。

CSSレイアウト実践講座

CSSレイアウト実践講座について

運営者プロフィール

運営者ブログ*

お問い合わせ

グローバルナビの作り方(ブロック版)

グローバルナビをブロック要素の組み合わせで作る方法は、インライン要素で作成する場合に比べ、設定がやや複雑になります。

HTMLの書き方

[HTMLコード]グローバルナビ ブロック版

  1. <ul id="gNavi">  
  2.     <li><a href="#">トップページ</a></li>  
  3.     <li><a href="#">プロフィール</a></li>  
  4.     <li><a href="#">当サイトについて</a></li>  
  5.     <li><a href="#">リンク集</a></li>  
  6.     <li><a href="#">お問い合わせ</a></li>  
  7. </ul>  

HTMLはインライン版と全く同じですが、グローバルナビの両サイドに余白を設けたり、罫線を引いたりする場合は、ulタグの前にdivタグで親ボックスを設け、そこにセレクタをつけた方が崩れを防止できます。

各ブロックの幅の計算

各メニューをインラインで表示させる場合は特に必要ありませんでしたが、各メニューを均等の幅で表示させるためには、それぞれの幅の計算が必要になります。

例えば、490pxの範囲内で5つのメニューを表示させる場合(以下、この例に沿って解説します。)、「490÷5=各98px」の幅を持たせればOKです。ただし、余白を設けたり罫線を引いたりする場合は、それを加味して各メニューの幅を決定するようにしましょう。

CSSの書き方

第1段階 - ulタグにサイズ・背景等を指定

まずは、メニューの外枠となるulタグに、サイズ、背景、表示方法等の指定を行います。

[CSSの記述]

  1. #gNavi {  
  2.     margin:10px 0;  
  3.     padding:0;  
  4.     width:490px;  
  5.     height:30px;  
  6.     overflow:hidden;  
  7.     background:#009;  
  8. }  

[ブラウザ上の表示]

グローバルナビの外枠となるulタグに、width(横幅)、height(高さ)を指定し、さらにoverflowプロパティで指定した幅・高さをはみ出した部分の表示方法を「hidden(非表示)」に指定します。この非表示の指定が、崩れを防ぐ上で重要になってきます。

第2段階 - リストマークの非表示とfloatの指定

次に、各メニューを表すliタグのリストマークを非表示にし、幅を指定して、liタグを左寄せにしていきます。

[CSSの記述]

  1. #gNavi {  
  2.     margin:10px 0;  
  3.     padding:0;  
  4.     width:490px;  
  5.     height:30px;  
  6.     overflow:hidden;  
  7.     background:#009;  
  8. }  
  9. #gNavi li { list-style:nonewidth:98pxfloat:left; }  

[ブラウザ上の表示]

id=gNavi内の全てのliタグに指定が適用されるようセレクタを「#gNavi li」とし、widthで幅を「98px」に指定、floatプロパティで左寄せにします。

floatプロパティを使用してボックス要素を片側に寄せた際、通常はclearプロパティによる回り込み解除の指定が必要になりますが、ここでは、親ボックスであるulタグに高さを指定し、さらにサイズを超えた部分を非表示にしていますので、clear指定なしで崩れを防ぐことができます。

最終段階 - aタグをブロック要素にしデザインを整える

最後に、aタグをブロック要素に変換し、その他のデザインを整えて完成です。

[CSSの記述]

  1. #gNavi {  
  2.     margin:10px 0;  
  3.     padding:0;  
  4.     width:490px;  
  5.     height:30px;  
  6.     overflow:hidden;  
  7.     background:#009;  
  8. }  
  9. #gNavi li { list-style:nonewidth:98pxfloat:left; }  
  10. #gNavi li a {  
  11.     display:block;  
  12.     line-height:30px;  
  13.     color:#fff;  
  14.     text-align:center;  
  15. }  
  16. #gNavi li a:hover { background:#66c; }  

[ブラウザ上の表示]

インライン要素をブロック要素として表示させるためにはdisplayプロパティを利用しますが、ブロック要素にする理由は、liタグ内で余白なしで背景色をつけるため。インライン要素に背景色を指定した場合は上下に余白ができてしまいますが、ブロック要素として表示させ、line-heightプロパティで1行の高さをグローバルナビの高さと同じに指定することで、ピッタリとくっつけて表示させることができます。

その他、マウスカーソルがリンク部分に乗ったときに背景色を変更する指定も行っています。

応用 - 背景に画像を指定する

上記の例では背景色を指定してグローバルナビをデザインしましたが、次のように背景に画像を使用することもできます。

[CSSの記述]

  1. #gNavi {  
  2.     margin:10px 0;  
  3.     padding:0;  
  4.     width:490px;  
  5.     height:30px;  
  6.     overflow:hidden;  
  7.     background:#009 url('bgOFF.gif');  
  8. }  
  9. #gNavi li { list-style:nonewidth:98pxfloat:left; }  
  10. #gNavi li a {  
  11.     display:block;  
  12.     line-height:30px;  
  13.     color:#fff;  
  14.     text-align:center;  
  15. }  
  16. #gNavi li a:hover { background:#66c url('bgON.gif'); }  

[ブラウザ上の表示]

通常用とマウスを乗せたとき用、2種類の画像を用意し、backgroundプロパティで背景画像に指定すると、上のようにちょっと凝った感じのグローバルナビを作ることもできます。

ただし、画像によっては微妙な位置の調整が必要になる場合があります。その際は、background-positionプロパティを利用して位置を調整してください。(上のサンプルでは、マウスを乗せた際の斜め線が元の線と合っていません。このような場合、背景画像の位置調整が必要になります。)