jQuery>オーバーレイをかけたスライドメニューを作った[簡単]

オーバーレイをかけたスライドメニューを作った[簡単]

2018年7月28日

レスポンシブデザインを意識すると、ボタンを押したら横からメニューが出てくるスライドメニューを考えたりします。
メニューが表示されている時は、オーバーレイをかけて画面全体を暗くして、メニュー以外のどこかをクリックしたらメニューを閉じる。みたいな感じのを作ります。

スライドメニューを作る

前回記事やコンテンツが流れていくスライダーのアレを作ってみたという記事を書いたのですが、これに追加しました。

参考サイトのリンクを貼っておきます
menu – header

というわけでまずはお決まりのデモページです。

ちょっとわかりづらいのですが、左上のボタンを押すと左からメニューが流れてきて、画面が薄暗くなります。

難しそうな印象がありましたが、jQueryでやることもクラスを付けたり取ったりするだけで、大したことはありませんでした。

HTMLを完成させる

sidebarという要素は、左側に隠しておきます。ただし、toggle-btnだけは表示させるように位置を調整します。
あとでcssでわかるのですが、overrayという要素は画面全体を黒色で囲います。

toggleSidebar()とcloseSidebar()というメソッドを呼び出すボタンがあります。
見ての通り、このボタンを押すとイベントが発火しますので、その2つの関数を定義しておきます。jQueryの方を見ていきます

ボタンを押すと、htmlにactiveクラスが付与されたり、削除されたりします。
ついでにoverrayを押してもactiveクラスが削除されるようにします

つまりhtmlにactiveクラスが付いている時は、スライドメニューが画面に表示されている状態ということです、jQueryはクラスを付けたり取ったりするだけです

CSSを完成させる

sidebarは初期値で画面左に幅の分だけ移動させておきます。
そしてhtmlにactiveクラスが付いている時はポジションを移動させます。

とまぁこんな感じでhtmlにactiveクラスが付いている時とそうでない時のコードを書いていけば良いので、続きも一気に書きます

overrayは普段はopacity: 0; visibility: hidden;にしておきます。activeクラスが付いた時にopacity: .65; visibility: visible;となって表示されるようになります。

toggle-btnは初期値では親要素が-200px動いているので、left:230px;で30px動いている感じです。
activeクラスが付いている時は、非表示にしています。

 

多くのサイトで使われている技術ですが、とても簡単に実装できました