メニューの三本線アイコンを HTML と CSS だけで実装する方法
更新日: 公開日:2016/01/18
スマホで Web ページを見ていると、画面の上によくある3本線のアイコン。その見た目から通称「ハンバーガーメニュー」と呼ばれ、メニュー表示のアイコンとして用いられます。
今回はこのハンバーガーメニューを HTML と CSS だけで実装する方法を紹介します。画像を使わず、プログラム実装によるメリットは2つ。大きさや色合いが簡単に変えられる自由度の高さと、ファーストビューの表示速度が速い点です。
では実装サンプルをご覧ください。
ハンバーガーメニューのアイコンを HTML と CSS で実装する
実装サンプル1【3本線のみ】
ハンバーガーメニュー サンプル1【HTML】
<div id="humberger"> <div></div> <div></div> <div></div> </div>
内側の div タグがそれぞれ線になるイメージです。
ハンバーガーメニュー サンプル1【CSS】
#humberger { position: relative; height: 20px; width: 28px; display: inline-block; box-sizing: border-box; } #humberger div { position: absolute; left: 0; height: 2px; width: 28px; background-color: #444; border-radius: 2px; display: inline-block; box-sizing: border-box; } #humberger div:nth-of-type(1) { bottom: 20px; } #humberger div:nth-of-type(2) { bottom: 10px; } #humberger div:nth-of-type(3) { bottom: 0; }
外側の要素に vertical-align を設定している理由は、ハンバーガーメニューに続いて「メニュー」など文字を入れた場合に 上下中央寄せ にするため。アイコンのみ表示する場合は不要です。
出力イメージ1【3本線のみ】
では HTML 上に出力したイメージをご覧ください。
拡大してもぼやけないのが CSS 実装の良いところ。そして処理速度も高速です。
実装サンプル2【枠つき】
HTML はそのままで CSS の設定を変更すれば、外枠が付けられます。
ハンバーガーメニュー サンプル2【CSS】
#humberger { position: relative; height: 46px; width: 46px; display: inline-block; box-sizing: border-box; background-color: #fff; border: 2px solid #444; border-radius: 4px; } #humberger div { position: absolute; left: 7px; height: 2px; width: 28px; background-color: #444; border-radius: 2px; display: inline-block; box-sizing: border-box; } #humberger div:nth-of-type(1) { bottom: 30px; } #humberger div:nth-of-type(2) { bottom: 20px; } #humberger div:nth-of-type(3) { bottom: 10px; }
出力イメージ2【枠つき】
外枠がつくと、また違った印象を受けます。
実装サンプル3【丸枠】
ボーダーの丸み設定を大きくすれば、完全な丸枠にもできます。
ハンバーガーメニュー サンプル3【CSS】
#humberger { position: relative; height: 51px; width: 51px; display: inline-block; box-sizing: border-box; background-color: #fff; border: 2px solid #444; border-radius: 50%; } #humberger div { position: absolute; left: 10px; height: 2px; width: 27px; background-color: #444; border-radius: 2px; display: inline-block; box-sizing: border-box; } #humberger div:nth-of-type(1) { bottom: 33px; } #humberger div:nth-of-type(2) { bottom: 23px; } #humberger div:nth-of-type(3) { bottom: 13px; }
出力イメージ3【丸枠】
丸い枠はポップな印象になりますね。
3つのサンプルをご覧いただきました。簡単な HTML 構造を用意するだけで、あとは CSS 設定により様々なバリエーションに展開できます。
ぜひサイトに合ったデザインにアレンジして、活用いただければと思います。