ミギムキ

[html] モバイル表示用のハンバーガーメニューをサッと設置したい

モバイル表示の際に使うハンバーガーメニューをサッと実装するためのサンプルコードです。

サンプルコード

html

<div class="hamburger"> <button class="hamburger_btn"> <span></span> </button> <div class="hamburger_content"> <nav class="hamburger_content_menu"> <ul> <li><a href="">アンカーテキスト</a></li> <li><a href="">アンカーテキスト</a></li> <li><a href="">アンカーテキスト</a></li> <li><a href="">アンカーテキスト</a></li> <li><a href="">アンカーテキスト</a></li> </ul> </nav> </div> </div>

html(WordPressのカスタムメニューを使う場合)

<div class="hamburger"> <button class="hamburger_btn"> <span></span> </button> <div class="hamburger_content"> <nav class="hamburger_content_menu"> <?php $args = array( 'menu' => 'hamburger', 'container' => false ); wp_nav_menu($args); ?> </nav> </div> </div>

CSS

@media screen and (min-width: 768px) { .hamburger { display: none; } } .hamburger_btn { position: fixed; top: 20px; right: 20px; z-index: 9999; width: 60px; height: 60px; border: none; border-radius: 50%; outline: none; appearance: none; background-color: #fff; } .hamburger_btn span { display: block; position: absolute; top: 50%; left: 50%; width: 30px; height: 3px; transform: translateX(-50%) translateY(-50%); background-color: currentColor; transition: 0.2s; } .hamburger_btn span:before, .hamburger_btn span:after { display: block; position: absolute; left: 0px; width: 100%; height: 100%; background-color: currentColor; transition: 0.3s; content: ""; } .hamburger_btn span:before { top: -400%; } .hamburger_btn span:after { top: 400%; } .hamburger_btn.js_open:after { content: ""; } .hamburger_btn.js_open > span { background: transparent; } .hamburger_btn.js_open > span:before, .hamburger_btn.js_open > span:after { top: 0px; } .hamburger_btn.js_open > span:before { transform: rotate(-45deg); } .hamburger_btn.js_open > span:after { transform: rotate(-135deg); } .hamburger_content { display: none; position: fixed; top: 0px; left: 0px; right: 0px; bottom: 0px; z-index: 9998; overflow-y: auto; background-color: rgba(0, 0, 0, 0.6); } .hamburger_content_menu ul { padding: 100px 1em 1em; font-size: 6.5vw; list-style: none; } .hamburger_content_menu li + li { margin-top: 1em; } .hamburger_content_menu a { color: #fff; text-decoration: none; }

jQuery

jQuery(function($) { $('.hamburger_btn').click( function() { $(this).toggleClass('js_open'); $('.hamburger_content').slideToggle(); }); });

ご質問など受け付けています

記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。

ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。