DrawerJSでリサイズしてもドロワーを閉じないようにする
ドロワーメニュー(横からスッと滑りこんでくるメニューです。)を使うとき、DrawerJSをよく使います。
きれいな動きでお気に入りなんですけど、デフォルトでは画面をリサイズするとドロワーが閉じてしまいます。
画面向きを変えたり、URLバーが消えるだけでも消えてしまうので、ちょっと使い勝手がよくありません。
ちょっとした修正で改善できたので、備忘録を兼ねてメモ。
触るファイルは drawer.js のみ!!
ダウンロードすると drawer-master/dist/js/drawer.js
があるので、これを開きます。
リサイズ時に発生している問題なので、おもむろに resize
で検索。
72行目あたりに
$(window).on('resize.' + namespace, function close() { __.close.call(_this); return _this.iScroll.refresh(); });
という記述があります。
それを・・・こうします。
// $(window).on('resize.' + namespace, function close() { // __.close.call(_this); // return _this.iScroll.refresh(); // });
コメントアウトですね。
これだけでリサイズしても、ドロワーメニューは閉じなくなります。
でも閉じないよ・・・
これだけだと開いたはいいけど、閉じれないメニューが出来てしまいました。
なので、もうちょっと修正。
先程のコメントアウトしたもののすぐ下に以下を追加。
// $(window).on('resize.' + namespace, function close() { // __.close.call(_this); // return _this.iScroll.refresh(); // }); // これを追加します。 $('.drawer-overlay').on('click', function(e) { e.preventDefault(); __.close.call(_this); return _this.iScroll.refresh(); });
$('.drawer-overlay')
が後ろのオーバーレイになりますので、これをクリックしたら、__.close.call(_this);
を呼んで、iScroll
をリフレッシュしてやってるんですね。
これでリサイズしても閉じないドロワーが出来ました。
drawerjs使ってる(使いたい)人で同じように困ってる人の助けになれば幸いです。
ではでは〜。