JavaScript不要!CSSだけでハンバーガーメニューを実装する方法
スマートフォンサイトでよく使われるメニューに三本線で表示されている「ハンバーガーメニュー」が挙げられます。
ハンバーガーメニューを実装するのはCSSとJavaScript、もしくはjQueryを使用することが多いですが、今回はもっと手軽にCSSのみで実装する方法を紹介いたします。
ハンバーガーメニューとは
まずハンバーガーメニューとはスマートフォンサイトなどで用いられるメニューです。
三本線のアイコンがハンバーガーに見えるためそう名付けられました。この三本線のボタンをタップするとメニューが展開し、もう一度タップするとメニューが収納されます。
ハンバーガーメニューについては弊社ブログの過去記事「ハンバーガーメニューのメリット・デメリット」に詳しくまとめてありますのでご覧ください。
コーディングで実装する際は、この三本線のボタンとメニューの二つの要素を記述します。
ボタンが一度タップされているかどうかを判断し、一度タップされている状態であればメニューを表示、タップされていない状態であればメニューを表示しないように設定していきます。
ボタン部分の実装方法
まず三本線のボタンを実装してみましょう。
HTMLとCSSは以下になります。
ボタンがタップされたかどうかの判断はチェックボックスで行いますので、ボタンをタップしチェックボックスにチェックが入ることを確認します。
三本線は<span>タグと疑似要素で作成します。
それではボタンがタップされたとき三本線を「×」マークにするために、CSSに記述を追加してみましょう。
三本線の真ん中が消え、上下の二本が「×」マークになったことを確認します。
最後に下記CSSを追加してチェックボックスを隠せばボタンの実装は完了です。
メニュー部分の実装方法
ボタンが実装出来たら、次にメニュー部分の実装をします。
先ほどのHTMLにメニューのコーディングを追加していきます。
ボタンの実装時に記述したチェックボックスの状態によってメニューの表示非表示を判断しますので、メニューは必ずチェックボックスと同じ階層に記述するようにしましょう。
メニューの装飾CSSは下記になります。
メニューのz-indexはボタンよりも小さい値にすること、positionはfixedにして追従するようにすること以外は参考程度で問題ありません。
この記述ではメニューは常に出ている状態なので、ボタンを押したらメニューが出てくるように記述を追加・変更します。
まず、メニューを画面の外へ飛ばします。
次に下記記述を追加して、ボタンがタップされたとき、すなわちチェックボックスにチェックがついたとき、メニューが画面に表示されるようにします。
ボタンのタップによってメニューが表示されるようになりました。
この時、transitionでアニメーション時間を設定しておくとよりなめらかにメニューが移動しますので、ボタンによって開閉されているということがよりユーザーに伝わりやすくなります。
これでハンバーガーメニューの実装が完了しました。
さいごに
今回はハンバーガーメニューをCSSだけで実装する方法を紹介しました。 JavaScriptやjQueryを使用しないため、JavaScriptが動作しない環境でも実装できるほか、表示速度が上がるなどのメリットがあります。
ただし、チェックボックスとメニューを同階層に記述しなければならないので、表示位置の改修などが生じた場合コーディングを大きく変更する必要があるなど、管理上のデメリットも存在します。
これらのメリット・デメリットをしっかり把握したうえで実装していきましょう。
最新記事 by 加藤 陵二 (全て見る)
- 【Sass実践編】Sassの条件分岐と繰り返し処理とは?Sassでの制御構文の書き方を紹介! - 2021年8月16日
- 【Sass実践編】Sassを使いこなす第一歩、「変数」の書き方と使い方! - 2021年6月17日
- 【Sass実践編】CSSの管理が楽になる「ネスト」を使ってみよう!書き方と利点を解説! - 2021年4月16日
- Sassの利用環境を構築しよう!gulpを使ってCSSにコンパイルする手順を解説 - 2021年2月17日
- JavaScript不要!CSSだけでハンバーガーメニューを実装する方法 - 2020年12月16日
関連記事
最新記事
FOLLOW US
最新の情報をお届けします