====== Nuxt.jsとBulmaでハンバーガーメニュー ====== WEBサイトのデザインとして、「レスポンシブデザイン」というものがあります。 パソコンで見るときは、メニューが左右に並んでいて、スマホで見ると、メニューが折りたたまれて、ハンバーガーのような横線3つのボタンなどになる、アレが、「レスポンシブデザイン」の代表例と言えると思います。 今回は、[[https://qiita.com/isamusuzuki/items/5ec800e423a3a56ef03d|Nuxt.jsにBulmaを組み込んだら、Vuexストアが理解できた件(@isamusuzuki 2018年05月03日に更新)]]をほぼ写経するかたちで、 パソコンでサイトを見ると、ナビゲーションバー(画面の一番上)に、メニューが横並びに表示 スマホででサイトを見ると、画面右上側にハンバーガーメニューを表示して、クリックするとメニューが縦に表示 されるようなサイトを作り、GitHub経由でNetlifyにデプロイ(アップロード)して、WEBサイトを公開します。 ===== 開発環境 ===== Windows 8.1 Pro VisualStudioCode nvm-windows 1.1.7 node v10.14.1 npm 6.4.1 @vue/cli 3.2.1 ===== Nuxt.jsアプリ(Bulma)の作成 ===== C:/vue/ フォルダに、Nuxt-Bulma-Hamburger2 アプリを作成する。 C:/vue/ フォルダをVisualStudioCodeで開き、Ctrl+@でコマンドプロンプトを開き、以下を入力 npx create-nuxt-app Nuxt-Bulma-Hamburger2 //いろいろ聞かれるが、UI flameworkで、bulmaを選択 //rendering modeはSingle Page Appを選択 {{:vue:pasted:20181202-233931.png}} cd Nuxt-Bulma-Hamburger2 npm install npm run dev //下の方に出てくる、http://localhost:3000 を、Ctrlを押しながらクリック {{:vue:pasted:20181202-234402.png}} ===== Nuxt.jsアプリ作成後のファイル構造 ===== Nuxtアプリ新規作成後のファイル構造は、以下のようになっている。 今回は、pages, components, layouts, storeの4つのフォルダの中身を編集していく。 {{:vue:pasted:20181202-235341.png}} ===== AboutページとContactページの作成 ===== pages/about.vue (新規作成) {{:vue:pasted:20181203-000610.png}} pages/about.vue を新規作成すると、自動でルーティングが設定されて、localhost:3000/about に表示されます。 class="hero is-primary is-bold などは、CSSフレームワーク「Bulma」の表記方法です。\\ 参考:https://bulma.io/documentation/overview/colors/ 同様に、Contactページも作成する。 pages/contact.vue (新規作成) {{:vue:pasted:20181203-000803.png}} ===== GitHubに登録 ===== https://github.com/にログインして、Nuxt-Bulma-Hamburger2という名前で、新規リポジトリを作成。 {{:vue:pasted:20181203-001308.png}} 上記の記載の一部にしたがって、VisualStudioCodeのコマンドプロンプトで、以下を入力します。git remote add ... のところは、それぞれのGitのアドレスを入力してください。 (以前、シークレットキーを登録したり、ログインしたりした記憶があるが、やり方は忘れてしまいました。。。) git add . git commit -m "make about and contact page" //以下のgitのアドレスは、それぞれのものを入力してください git remote add origin https://github.com/adash333/Nuxt-Bulma-Hamburger2.git git push -u origin master {{:vue:pasted:20181203-001513.png}} ここまでのソースコード https://github.com/adash333/Nuxt-Bulma-Hamburger2/tree/72d7c91a751c80f60c2e3465ca9e3189f1f6c0d3 ===== ナビゲーションバーのComponentを作成 ===== Bulmaフレームワークを利用して、レスポンシブなナビゲーションバーを作成する。 コンポーネントは、名前の通り、components/xxx.vueというような名前で、components/フォルダに作成する。 components/Navbar.vue (新規作成) {{:vue:pasted:20181203-002954.png}} 参考:https://bulma.io/documentation/components/navbar/ Navbarコンポーネントを、レイアウトファイルに取り付ける。 具体的には、 layouts/default.vue を以下のように変更する。 (変更前) {{:vue:pasted:20181203-003048.png}} (変更後) {{:vue:pasted:20181203-003800.png}} ブラウザの横幅を1023px以上に広げると以下のような感じになる。\\ (Navbar.vueのトップ を HOME に変更した。) {{:vue:pasted:20181203-003930.png}} ブラウザの横幅(px, pixel)に応じて、ハンバーガーメニューが表示されたり、されなかったりするBulmaの仕様を利用しています。 https://bulma.io/documentation/components/navbar/ {{:vue:pasted:20181203-004447.png}} Bulmaのtouch deviceとは、横幅が1023px以下とのことだそうです。 もうちょっと横幅が小さくなってからハンバーガーメニュー出してほしいのですが、やり方は分かりませんでした。 https://bulma.io/documentation/overview/responsiveness/ {{:vue:pasted:20181203-004335.png}} ここまでのソースコード(変更点): https://github.com/adash333/Nuxt-Bulma-Hamburger2/commit/87ad1cfd1126d09cb0d8a6590ada0fa9badc14a9 ===== ハンバーガーメニューをトグル(クリックするとメニューを表示)するようにする ===== components/Navbar.vue