drawerのスマホメニューのスクロールの動きがおかしくなったのを解決した方法とは?!
スマホメニューを作るときに一番便利でお洒落な感じのDrawer.jsですが
今まで何年も問題なく動いていたのに、
ここ数日、何の前触れもなく、
ハンバーガーメニューボタンを押してヨコからするっとメニューが出てくるまではいいのですが、
そこからメニュー内でスクロールさせようとして
指でスクロールしようとすると、
何故か、背景のページが動き、メニューないではスクロールせず、
ちょこっとスクロールさせようとしたら、
メニューがすぐに引っ込んでしまうという奇妙奇天烈な現象がおきた。。
な、な、な
なんで~
何が原因??
今までちゃんとうごいていたのに~
というわけで
相当悩みましたが結論としては解決しました。
それは、以下のような<nav>の間に<div class=”inner”>をかませてCSSをあてることで解決しました。
具体的に言うと、
↓こんな状態の部分を
<!-- スマホメニューdrawer --> <div class="visible_xs_block"> <button type="button" class="drawer-toggle drawer-hamburger"> <span class="sr-only">toggle navigation</span> <span class="drawer-hamburger-icon"></span> <p>MENU</p> </button> <nav class="drawer-nav" role="navigation"> <?php wp_nav_menu(array('theme_location' => 'smh_head_navi',)); ?> </nav> </div> <!-- スマホメニューdrawer -->
↓こんな感じでinnerでメニューを挟む
<!-- スマホメニューdrawer --> <div class="visible_xs_block"> <button type="button" class="drawer-toggle drawer-hamburger"> <span class="sr-only">toggle navigation</span> <span class="drawer-hamburger-icon"></span> <p>MENU</p> </button> <nav class="drawer-nav" role="navigation"> <div class="inner"> <?php wp_nav_menu(array('theme_location' => 'smh_head_navi',)); ?> </div> </nav> </div> <!-- スマホメニューdrawer -->
そして、以下をCSSに追加します。
nav .inner { width: 100%; height: 100%; overflow-y: auto; -webkit-overflow-scrolling: touch; }
これで解決しました!!
以下のようなサイトを参考にしました。
https://qiita.com/n4o847/items/c491c040f40809325394
※最初はこれ↓を見てinnerではさむまではわかったのですが、
何かスタイルを当てるんだろうけど、書いていなかったので
いろんなキーワードで調べまくっているうちに、
↓こちらをみつけて、
https://qiita.com/n4o847/items/c491c040f40809325394
2つの情報をあわせたら解決しました。
もし自分のような状況に方の解決のお役に立てればうれしいです!!(^^)/
p.s. ちなみにハンバーガーメニューボタンは position: fixed; になっている場合に、今回の現象は当てはまります。
.drawer-hamburger { position: fixed; }
関連記事はこちら!
スポンサーリンク