ザリガニデザインオフィス

横から出てくるドロワーメニューの作り方のサムネイル

横から出てくるドロワーメニューの作り方

お知らせ

ハンバーガーボタン×ドロワーメニューのテンプレートを作成しました。詳しくはこちら

CSSのtransitionとtranslateを組み合わせます。

<button type="button" class="btn_menu">
 <!-- ボタンの記述 -->
</button>
<nav>
 <!-- ナビの記述 -->
</nav>
nav {
  width: 312px;
  height: 100%;
  transition: all 0.2s;
  transform: translate(312px);
  position: fixed;
  top: 0;
  right: 0;
  z-index: 1000;
  background-color: #fff;
}
nav.open {
  transform: translate(0);
}
// jQueryは読み込み済み前提
$(function(){
  $('.btn_menu').click(function(){
    $('nav').toggleClass('open');}
  });
})

クリックすると、横からニュッとメニューが出てくるやつの実装方法です。最近はCSSによりアニメーションのサポートが進み、複雑なjQueryを書かなくても済みます。

上記の記述はメニューの大きさが横幅312px、高さ100%のものですが、こちらはご自身のものに応じて変更してください。ここではこの大きさで話を進めていきます。

CSSにアニメーションを記述する

大きさ以外のCSSですがposition:fixedとtop:0;right:0で右端のに固定しています。z-indexは1000くらいで優先的に上にくるようにしています。transform:translate(312px)で312px(メニューに大きさの分だけ)右にずらして外に出します。transition:all 0.2sで値の変化にアニメーションをつけます。今回は0.2秒で出てきます。

デフォルトではtranslateでずれているので右端から出ていますがopenのクラス名がつくとtranslateの値が0になります。この312pxから0になる変化を、transitionによって0.2秒の間に段階的に変化させることでアニメーションを実現しています。

jQueryはクラスの追加・削除を行うだけ

クラスを付けたり取ったりするのがjQueryの役目で、クラスbutton_menuをクリックすると、toggleClassによってopenのクラス名を制御しています。

これをアニメーションで×印になるハンバーガーボタンと組合わせるとこのサイトのようなメニューができます。