vue:nuxt.jsとbulmaでハンバーガーメニュー
差分
このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| vue:nuxt.jsとbulmaでハンバーガーメニュー [2018/12/02] – 作成 adash333 | vue:nuxt.jsとbulmaでハンバーガーメニュー [2019/01/01] (現在) – [出来上がったサイトとソースコード] adash333 | ||
|---|---|---|---|
| 行 5: | 行 5: | ||
| パソコンで見るときは、メニューが左右に並んでいて、スマホで見ると、メニューが折りたたまれて、ハンバーガーのような横線3つのボタンなどになる、アレが、「レスポンシブデザイン」の代表例と言えると思います。 | パソコンで見るときは、メニューが左右に並んでいて、スマホで見ると、メニューが折りたたまれて、ハンバーガーのような横線3つのボタンなどになる、アレが、「レスポンシブデザイン」の代表例と言えると思います。 | ||
| - | 今回は、[[https:// | + | 今回は、[[https:// |
| + | |||
| + | < | ||
| + | パソコンでサイトを見ると、ナビゲーションバー(画面の一番上)に、メニューが横並びに表示 | ||
| + | スマホででサイトを見ると、画面右上側にハンバーガーメニューを表示して、クリックするとメニューが縦に表示 | ||
| + | </ | ||
| + | |||
| + | されるようなサイトを作り、GitHub経由でNetlifyにデプロイ(アップロード)して、WEBサイトを公開します。 | ||
| - | 前回の写経元サイト:https:// | ||
| ===== 開発環境 ===== | ===== 開発環境 ===== | ||
| 行 17: | 行 24: | ||
| npm 6.4.1 | npm 6.4.1 | ||
| @vue/cli 3.2.1 | @vue/cli 3.2.1 | ||
| - | < | + | </code> |
| ===== Nuxt.jsアプリ(Bulma)の作成 ===== | ===== Nuxt.jsアプリ(Bulma)の作成 ===== | ||
| C:/vue/ フォルダに、Nuxt-Bulma-Hamburger2 アプリを作成する。 | C:/vue/ フォルダに、Nuxt-Bulma-Hamburger2 アプリを作成する。 | ||
| + | |||
| + | C:/vue/ フォルダをVisualStudioCodeで開き、Ctrl+@でコマンドプロンプトを開き、以下を入力 | ||
| < | < | ||
| 行 27: | 行 36: | ||
| //rendering modeはSingle Page Appを選択 | //rendering modeはSingle Page Appを選択 | ||
| </ | </ | ||
| - | {{:z_blog:2018: | + | |
| + | {{:vue: | ||
| < | < | ||
| 行 33: | 行 43: | ||
| npm install | npm install | ||
| npm run dev | npm run dev | ||
| + | // | ||
| </ | </ | ||
| + | {{: | ||
| + | |||
| + | ===== Nuxt.jsアプリ作成後のファイル構造 ===== | ||
| + | Nuxtアプリ新規作成後のファイル構造は、以下のようになっている。 | ||
| + | |||
| + | 今回は、pages, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ===== AboutページとContactページの作成 ===== | ||
| + | pages/ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | pages/ | ||
| + | |||
| + | class=" | ||
| + | 参考:https:// | ||
| + | |||
| + | 同様に、Contactページも作成する。 | ||
| + | |||
| + | pages/ | ||
| + | {{: | ||
| + | |||
| + | ===== GitHubに登録 ===== | ||
| + | https:// | ||
| + | |||
| + | {{: | ||
| + | |||
| + | 上記の記載の一部にしたがって、VisualStudioCodeのコマンドプロンプトで、以下を入力します。< | ||
| + | |||
| + | (以前、シークレットキーを登録したり、ログインしたりした記憶があるが、やり方は忘れてしまいました。。。) | ||
| + | |||
| + | < | ||
| + | git add . | ||
| + | git commit -m "make about and contact page" | ||
| + | // | ||
| + | git remote add origin https:// | ||
| + | git push -u origin master | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ここまでのソースコード | ||
| + | |||
| + | https:// | ||
| + | |||
| + | ===== ナビゲーションバーのComponentを作成 ===== | ||
| + | Bulmaフレームワークを利用して、レスポンシブなナビゲーションバーを作成する。 | ||
| + | |||
| + | コンポーネントは、名前の通り、components/ | ||
| + | |||
| + | components/ | ||
| + | {{: | ||
| + | |||
| + | 参考:https:// | ||
| + | |||
| + | Navbarコンポーネントを、レイアウトファイルに取り付ける。 | ||
| + | |||
| + | 具体的には、 layouts/ | ||
| + | |||
| + | (変更前) | ||
| + | {{: | ||
| + | |||
| + | (変更後) | ||
| + | {{: | ||
| + | |||
| + | ブラウザの横幅を1023px以上に広げると以下のような感じになる。\\ | ||
| + | (Navbar.vueのトップ を HOME に変更した。) | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ブラウザの横幅(px, | ||
| + | |||
| + | https:// | ||
| + | {{: | ||
| + | |||
| + | Bulmaのtouch deviceとは、横幅が1023px以下とのことだそうです。 | ||
| + | |||
| + | もうちょっと横幅が小さくなってからハンバーガーメニュー出してほしいのですが、やり方は分かりませんでした。 | ||
| + | |||
| + | https:// | ||
| + | {{: | ||
| + | |||
| + | ここまでのソースコード(変更点): | ||
| + | https:// | ||
| + | |||
| + | ===== ハンバーガーメニューをトグル(クリックするとメニューを表示)するようにする ===== | ||
| + | |||
| + | components/ | ||
| + | |||
| + | <div class=" | ||
| + | |||
| + | <div class=" | ||
| + | |||
| + | これで、ブラウザの横幅が1023px以下のときにハンバーガーメニューが出て、それをクリックすると、メニューが表示されるようになる。 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | しかし、この時点では、メニューの中のリンク先をクリックしても、トグルされたメニューが開いたままになってしまって閉じてくれない。 | ||
| + | |||
| + | そこで、Vuexという状態管理システムを用いて、リンク先をクリックすると、自動的にトグルが閉じるようにする。 | ||
| + | |||
| + | ここまでのソースコード(変更点):https:// | ||
| + | |||
| + | ===== Vuexストアを設定してトグルONとOFFをstoreに定義 ===== | ||
| + | |||
| + | Vuexシステムを利用するために、store/ | ||
| + | |||
| + | store/ | ||
| + | {{: | ||
| + | |||
| + | storeに、isMenuActive (True or False)の状態を定義しておいて、 | ||
| + | |||
| + | -ハンバーガーメニューをクリックしたらON、OFF | ||
| + | -リンクをクリックしてページ遷移したらOFF | ||
| + | となるようにしておきます。 | ||
| + | |||
| + | components/ | ||
| + | |||
| + | <wrap hi>< | ||
| + | < | ||
| + | //変更前 | ||
| + | @click=" | ||
| + | //変更後 | ||
| + | @click=" | ||
| + | </ | ||
| + | |||
| + | <wrap hi>< | ||
| + | < | ||
| + | //変更前 | ||
| + | : | ||
| + | //変更後 | ||
| + | : | ||
| + | </ | ||
| + | |||
| + | また、Navbar.vueの< | ||
| + | {{: | ||
| + | |||
| + | ===== Vuexについて ===== | ||
| + | 状態管理システムVuexの構造についての絵を、以下に貼り付けておきます。 | ||
| + | |||
| + | https:// | ||
| + | {{: | ||
| + | |||
| + | データの流れが、Vue Components => Actions => Mutations => State => Vue Components というように一方向らしいです。。。 | ||
| + | |||
| + | 大事なことは、< | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | < | ||
| + | export default { | ||
| + | fetch ({store}) { | ||
| + | store.commit(' | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | stateとかstoreとか言葉がたくさん出てきて間違えやすいので、タイプミスに注意です。 | ||
| + | |||
| + | pages/ | ||
| + | |||
| + | 一度、ターミナル画面でCtrl+Cでサーバを停止し、もう一度、npm run devを入力。 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ちゃんとうまくいった。 | ||
| + | |||
| + | pages/ | ||
| + | {{: | ||
| + | |||
| + | pages/ | ||
| + | {{: | ||
| + | |||
| + | 他のページへ移動しても、ちゃんとハンバーガーメニューは閉じてくれた。 | ||
| + | |||
| + | ここまでのソースコード(変更点):https:// | ||
| + | |||
| + | ===== NuxtサイトをNetlifyにデプロイ ===== | ||
| + | 公式サイトの通りに、NetlifyからGitHub経由でデプロイする。 | ||
| + | |||
| + | https:// | ||
| + | {{: | ||
| + | |||
| + | Netlifyでの画面は以下のようになる。 | ||
| + | {{: | ||
| + | |||
| + | ===== Nuxt.jsに関するリンク ===== | ||
| + | https:// | ||
| + | | ||
| + | Nuxt.js で簡単な画像一覧アプリを作成する – Part.1 | ||
| + | |||
| + | ===== 出来上がったサイトとソースコード ===== | ||
| + | |||
| + | 出来上がったサイト | ||
| + | |||
| + | https:// | ||
| + | |||
| + | {{: | ||
| + | |||
| + | 幅を狭くすると、以下のようにハンバーガーメニューが出て、クリックするとリンク先が表示される。 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ソースコード | ||
| + | |||
| + | https:// | ||
| + | |||
| + | ===== Vuexについて理解するためのお勧めの本 ===== | ||
| + | |||
| + | Vuex、正直難しいです。昔、私はReduxは挫折しました。しかし、以下の本を最初から読んでいくと、なんとなく、Vuexが少しわかった気にはなれます。 | ||
| + | |||
| + | Vue.jsのコードを理解するためにも、以下の本は非常におすすめです。@vue/ | ||
| - | ===== 前回の写経元サイト ===== | + | < |
| + | <iframe style=" | ||
| + | </ | ||
| + | ===== 写経元サイト ===== | ||
| https:// | https:// | ||
vue/nuxt.jsとbulmaでハンバーガーメニュー.1543753178.txt.gz · 最終更新: 2018/12/02 by adash333
