ユーザ用ツール

サイト用ツール


z_blog:2018:181201_nuxt_bulma_responsive

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
z_blog:2018:181201_nuxt_bulma_responsive [2018/12/02] – [リンク] adash333z_blog:2018:181201_nuxt_bulma_responsive [2018/12/02] (現在) – [ソースコード] adash333
行 190: 行 190:
  
  
-===== リンク =====+===== ハンバーガーメニューをトグル(クックするとメニューを表示)するようにする ===== 
 +横幅を狭くしたときに、タイトルと、ハバーガーメニューが一行におさまりきらない原因は不明であった。。。 
 + 
 +とりあえず次に進む。 
 + 
 +components/Navbar.vue 
 + 
 +<div class="navbar-burger">に、<wrap hi>@click="toggleMenu"</wrap>を追加して、リックしたらメニューが出てくる(toggle)するようにtoggleMenu関数を定義。 
 + 
 +<div class="navbar-burger">と、<div class="navbar-menu">に、<wrap hi>:class="{'is-active': isMenuActive}"</wrap>を追加。 
 + 
 +これで、ブラウザの横幅が1023px以下のときにハンバーガーメニューが出て、それをクリックすると、メニューが表示されるようになった。 
 +{{:z_blog:2018:pasted:20181202-142513.png}} 
 + 
 +しかし、この時点では、メニューの中のリンク先をクリックしても、トグルされたメニューが開いたままになってしまって閉じてくれない。 
 + 
 +そこで、Vuexを用いて、リンク先をクリックすると、自動的にトグルが閉じるようにする。 
 + 
 +===== Vuexストアを設定してトグルONとOFFをstoreに定義 ===== 
 + 
 +store/index.js (新規作成) 
 + 
 +{{:z_blog:2018:pasted:20181202-143046.png}} 
 + 
 +storeに、isMenuActive (True or False)の状態を定義しておいて、 
 + 
 +  -ハンバーガーメニューをクリックしたらON、OFF 
 +  -リンクをクリックしてページ遷移したらOFF 
 +となるようにしておきます。 
 + 
 +components/Navbar.vue 
 + 
 +<div class="navbar-burger">を、以下のように変更 
 +<code> 
 +//変更前 
 +@click="toggleMenu" :class="{'is-active': isMenuActive}" 
 +//変更後 
 +@click="$store.commit('toggleMenu')" :class="{'is-active': $store.state.isMenuActive}" 
 +</code> 
 + 
 +<div class="navbar-menu">を、以下のように変更 
 +<code> 
 +//変更前 
 +:class="{'is-active': isMenuActive}" 
 +//変更後 
 +:class="{'is-active': $store.state.isMenuActive}" 
 +</code> 
 + 
 + 
 + 
 +Vuexの構造についての絵を、以下に貼り付けておく。 
 + 
 +https://vuex.vuejs.org/ja/ 
 +{{:z_blog:2018:pasted:20181202-143811.png}} 
 + 
 +データの流れが、Vue Components => Actions => Mutations => State => Vue Components というように一方向らしい。。。 
 + 
 +<nuxt-link>経由で特定のページに移動したときのNuxt.jsアプリの動作として、<wrap hi>fetch()メソッドを呼び出す。</wrap>というものがあるとのことなので、indexページ、aboutページ、contactページの<script>のところに、以下のコードを追加する。 
 + 
 +<code> 
 +<script> 
 +export default { 
 +  fetch ({store}) { 
 +    store.commit('resetMenu'
 +  } 
 +
 +</script> 
 +</code> 
 + 
 +pages/index.vue (変更後) 
 +{{:z_blog:2018:pasted:20181202-145003.png}} 
 + 
 +pages/about.vue (変更後) 
 +{{:z_blog:2018:pasted:20181202-145145.png}} 
 + 
 +あれ?store is not defined というNuxt.jsのエラーが出てしまった。 
 + 
 +<script>のところのfetch ({store}) { を、fetch ({state}) { とタイプミスをしていました。しばらく分からなかった。。。 
 +エラーもなかなか見つけにくい。。。(Ionic(Angular)のときは、ChromeでCtrl+Shift+Iでconsole logを見ると、どのファイルの何行目にどのようなエラーがありそうか、けっこう教えてくれる感じであった。) 
 + 
 +{{:z_blog:2018:pasted:20181202-145609.png}} 
 + 
 +pages/contact.vue (変更後) 
 +{{:z_blog:2018:pasted:20181202-145830.png}} 
 + 
 +まだ行がずれていてかっこ悪いが、これで、なんとか、ハンバーガーメニューが実装できた。 
 + 
 +しかし、ハンバーガーメニューの3本線を「メニュー」という文字にしたり、ボタンにしたりしようとすると、なんだかデザイン的に自分の思うように変更できない。。。 
 + 
 + 
 + 
 + 
 + 
 +===== NuxtサイトをNetlifyにデプロイ ===== 
 + 
 +公式サイトに書いてあった。 
 + 
 +https://ja.nuxtjs.org/faq/netlify-deployment/ 
 +{{:z_blog:2018:pasted:20181202-151748.png}} 
 + 
 +Netlifyでの画面はこんな感じ。 
 + 
 +{{:z_blog:2018:pasted:20181202-151817.png}} 
 + 
 +デプロイ後のサイト 
 + 
 +https://stoic-wescoff-381f9f.netlify.com/ 
 + 
 + 
 +===== ソースコード ===== 
 +https://github.com/adash333/nuxt2-bulma-hamburger 
 + 
 +===== Navbar-brandをNavbar-blandとタイプミスしていた ===== 
 + 
 +ハンバーガーメニューがずれていたので、何がおかしいのかずっと分からなかったが、Navbar-brandのタイプミスであった。 
 + 
 +VisualStudioCodeの拡張機能で、Bulmaのタイプミスを指摘してくれるものはないかな??? 
 + 
 +components/Navbar.vue 
 + 
 +(変更前) 
 +{{:z_blog:2018:pasted:20181202-161903.png}} 
 + 
 +(変更後) 
 +{{:z_blog:2018:pasted:20181202-161950.png}} 
 + 
 +これでやっと写経できた。
  
 ===== Nuxt.jsでお勧めの本(2018年現在) ===== ===== Nuxt.jsでお勧めの本(2018年現在) =====

z_blog/2018/181201_nuxt_bulma_responsive.1543726468.txt.gz · 最終更新: 2018/12/02 by adash333

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki