【CSS】クリック領域を広げたナビゲーションボタンを作る

一般的なナビゲーションのHTMLが以下になります。
※事前にulにdisplay:flexをしてliを横並びにしています。

HTML
<nav> <ul> <li><a href="#">ホーム</a></li> <li><a href="#">当社について</a></li> <li><a href="#">アクセス</a></li> <li><a href="#">お問い合わせ</a></li> </ul> </nav>
CSS
.content-nav ul{ display: flex; }

CSSを修正していきます。すでに横並びになっているので、まずはliタグの右側に1pxを空けてそれぞれが別のボタンなのをわかりやすくしました。また、last-childで最後のマージンを0にしてなしにします。

次に、ボタン領域にスペースを確保したいので、aタグにpaddingを設定します。わかりやすいよう、背景の色を薄い赤にしました。

CSS
.content-nav li{ margin-right:1px; } .content-nav li:last-child{ margin-right:0; }   .content-nav li a{ padding:10px; background-color:#ffcccc; }

しかし上記のままだと、天地がはみ出ているのがわかります。これは、aタグはインライン要素なので高さを持つことができないためです。

ですので、aタグをブロック要素に変更するためにdisplay:blockをします。これで高さが生成されます。

CSS
.content-nav li{ margin-right:1px; } .content-nav li:last-child{ margin-right:0; }   .content-nav li a{ display:block; padding:10px; background-color:#ffcccc; }

すでにdisplay:flexにより横並びでnowrapの状態なので、すべてのliの大きさを100%にします。また、左右中央にするためtext-align:centerを追加します。

CSS
.content-nav li{ margin-right:1px; width:100%; text-align: center; } .content-nav li:last-child{ margin-right:0; }   .content-nav li a{ display:block; padding:10px; background-color:#ffcccc; }

さらに、ホバーで色の変更をします。

CSS
.content-nav li{ margin-right:1px; width:100%; text-align: center; } .content-nav li:last-child{ margin-right:0; }   .content-nav li a{ display:block; padding:10px; background-color:#ffcccc; }   .content-nav li a:hover{ color:#fff; background-color:#ff6666; }

以上のように、

  • aタグはインライン要素なので、ブロック要素へ変更
  • aタグにpaddingを追加

とすることで、テキストリンクをボタン化してグローバルナビゲーションを作成する事ができます。

Yuki Nakata

中田デザイン事務所 代表。
WEBデザイナー(フリー)/ WEB講師(非常勤)/ 海外販売(法人)他

お仕事のご相談はお問い合わせフォームへお願いします。