メニューの三本線アイコンを HTML と CSS だけで実装する方法

更新日: 公開日:2016/01/18
CSSでハンバーガーメニューのアイコンを実装

スマホで 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 設定により様々なバリエーションに展開できます。

ぜひサイトに合ったデザインにアレンジして、活用いただければと思います。

\ この記事をシェアする /

このブログの運営者

NJ

Web系メインで従事していた元システムエンジニア。現在は個人事業主として独立。Webサイト運営における「困った問題」の解決方法をブログで発信。Web サイト運営、ポップデザインや動画制作など、パソコンでモノづくりをしている。