今回、drawer.js でドロワーメニューが簡単に装着できると
効いたので早速実装してみました。
実装はほんとに簡単で、head内にdrawer.cssなどを追加、
body内に決められたコードを挿入。
最後</body>の直前にscriptコード入れて完了です。
まとめて書くとこんな感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<head> <!-- drawer.css --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/drawer/3.2.1/css/drawer.min.css"> <!-- jquery & iScroll --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/iScroll/5.1.3/iscroll.min.js"></script> <!-- drawer.js --> <script src="https://cdnjs.cloudflare.com/ajax/libs/drawer/3.2.1/js/drawer.min.js"></script> </head> <body class="drawer drawer--left"> <header role="banner"> <!-- ハンバーガーボタン --> <button type="button" class="drawer-toggle drawer-hamburger"> <span class="sr-only">toggle navigation</span> <span class="drawer-hamburger-icon"></span> </button> <!-- ナビゲーションの中身 --> <nav class="drawer-nav" role="navigation"> <ul class="drawer-menu"> <li><a class="drawer-brand" href="#">Brand</a></li> <li><a class="drawer-menu-item" href="#">Nav1</a></li> <li><a class="drawer-menu-item" href="#">Nav2</a></li> </ul> </nav> </header> <main role="main"> </main> <!-- drawer利用の宣言 --> <script> $(document).ready(function() { $('.drawer').drawer(); }); </script> </body> |
これだけで下記のように、バーガーボタンとボタン押すと
メニューが表示されるようになります。
こんな感じ
コード書いてもここまで表示されなければ、うまく反映
されてない可能性があります。
私の場合は、コード書いてどこまで反映されるのわからなかったので
メニューの設定も必要なのかなとその方法も探しました。
でも、上の動画の状態まで出来てるので、エラーが無ければ
細かい設定するだけで完了で簡単に出来ます。
エラーか確認する方法
もし、表示されない場合は、デベロッパーツール開いて、
上部のコンソールをクリックして、エラーが出てないか確認します。
私の場合はこんな感じでエラーが出てました。
Uncaught TypeError: $(…).drawer is not a function
at HTMLDocument.<anonymous> (headertest.html:392:22)
at l (jquery.min.js:2:29375)
at c (jquery.min.js:2:29677)
jQueryのプラグインを複数入れてる場合は注意
この、drawer.js は複数のプラグインを入れてる場合、エラーに
なるような感じです。
以前にも、jQueryのプラグイン干渉聞いたことはあったので
もしかしてとは思ってましたが。。。。
今回、PC表示時にナビメニューで使ってたのでそれと干渉してるのかな?
実際に解決した方法
試しに、今回のdrawer.js用で挿入した、scriptコードの前に
下記のコードを追加しました。
jQuery.noConflict();
(function($) {
と
})(jQuery);
で囲ってあげると解消されるみたいなのでやってみたらOKでした。
無事に表示されるようになりました。
最終的にうまくいったコード
HTML </head>のすぐ上に挿入
ここに入れる script ソースの順番に注意!
今回は、先に入れてる方のソースを上に置かないとエラーになりました。
1 2 3 4 |
<!-- drawer.css --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/drawer/3.2.1/css/drawer.min.css"> <!-- jquery & iScroll --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/iScroll/5.1.3/iscroll.min.js"></script> <!-- drawer.js --> <script src="https://cdnjs.cloudflare.com/ajax/libs/drawer/3.2.1/js/drawer.min.js"></script> |
HTML header部分に挿入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<body class="drawer drawer--left"> <header role="banner"> <!-- ハンバーガーボタン --> <button type="button" class="drawer-toggle drawer-hamburger"> <span class="sr-only">toggle navigation</span> <span class="drawer-hamburger-icon"></span> </button> <!-- ナビゲーションの中身 --> <nav class="drawer-nav" role="navigation"> <ul class="drawer-menu"> <li><a class="drawer-brand" href="#">Brand</a></li> <li><a class="drawer-menu-item" href="#">Nav1</a></li> <li><a class="drawer-menu-item" href="#">Nav2</a></li> </ul> </nav> </header> <main role="main"> </main> |
HTML 一番下</body>のすぐ上に挿入
1 2 3 4 5 6 7 8 9 10 11 |
<!-- drawer利用の宣言 --> <script> jQuery.noConflict(); (function($) { $(document).ready(function() { $('.drawer').drawer(); }); })(jQuery); </script> </body> |
最終的にこのコードで表示されるようになりました。
drawer.js 簡単なんでぜひ使ってみてください。
また、挿入コードは時期によってバージョン等あるみたいです。
こちらの記事で詳しく書かれてますので参考にしてください。
私も、この記事からコードいただいてます。
他の方法もあったが使い方注意です。
コメント