18.nuxt.jsとbulmaでハンバーガーメニュー:index.html
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
18.nuxt.jsとbulmaでハンバーガーメニュー:index.html [2019/02/08] – [インデックスページ以外のページ(about.vueとcontact.vue)を作成] adash333 | 18.nuxt.jsとbulmaでハンバーガーメニュー:index.html [2019/02/09] (現在) – [初めてのVuex目次] adash333 | ||
---|---|---|---|
行 15: | 行 15: | ||
[[18.nuxt.jsとbulmaでハンバーガーメニュー: | [[18.nuxt.jsとbulmaでハンバーガーメニュー: | ||
+ | |||
+ | [[19.nuxt.jsで画像一覧アプリ: | ||
+ | |||
+ | |||
===== すること ===== | ===== すること ===== | ||
行 22: | 行 26: | ||
ソースコード | ソースコード | ||
+ | https:// | ||
- | + | スクリーンショット | |
- | + | {{: | |
- | Demo | + | |
===== 開発環境 ===== | ===== 開発環境 ===== | ||
行 72: | 行 76: | ||
pages/ | pages/ | ||
- | <html> | + | pages/ |
- | <script src="https://gist.github.com/adash333/f34ebffc087acc6a150efee453667ff7.js" | + | <code> |
- | </html> | + | <template> |
+ | <section class="hero is-primary is-bold"> | ||
+ | <div class=" | ||
+ | <h1 class=" | ||
+ | <h2 class=" | ||
+ | </div> | ||
+ | </section> | ||
+ | </template> | ||
+ | </code> | ||
+ | {{: | ||
+ | pages/ | ||
+ | < | ||
+ | < | ||
+ | <section class=" | ||
+ | <div class=" | ||
+ | <h1 class=" | ||
+ | <h2 class=" | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | {{: | ||
- | ==== font awesome 5について ==== | ||
- | https://www.npmjs.com/package/@fortawesome/fontawesome-free-webfonts | + | ===== ナビゲーションバーのコンポーネントを作成する ===== |
- | {{: | + | components/Navbar.vue |
- | →ん?、https: | + | < |
- | {{:18.nuxt.jsとbulmaでハンバーガーメニュー: | + | < |
- | →https://www.npmjs.com/package/ | + | <nav class=" |
- | {{: | + | <div class=" |
- | Weekly Downloadsが23万、、、すごい。。。 | + | <div class=" |
+ | <div class=" | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </div>< | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <nuxt-link to="/ | ||
+ | < | ||
+ | </div> | ||
+ | </div>< | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
- | *Add Dependencyから、@fortawesome/fontawesome-free をインストールする(他のはアンインストールする) | + | このNavbar.vueを、layouts/default.vue内に表示するようにします。 |
- | {{: | + | |
+ | layouts/ | ||
+ | (変更前) | ||
+ | {{: | ||
+ | (変更後) | ||
+ | {{: | ||
+ | {{: | ||
- | 参考 | + | ===== ハンバーガーメニューをトグルさせる ===== |
- | https:// | + | 横幅を狭くすると、画面右上にハンバーガーメニューが出てきますが、それをクリックしても何も起こりません。 |
- | @riversun | + | isMenuActiveというプロパティとtoggleMenuというメソッドを定義して、ハンバーガーメニューをクリックすると、縦方向にリンクが表示されるようにします。 |
- | 2019年01月18日に更新 | + | |
- | 1年後に差がつくFont Awesome5 ~フロントエンド開発(ES6, | + | |
+ | < | ||
+ | < | ||
+ | ... | ||
+ | <div class=" | ||
+ | ... | ||
+ | <div class=" | ||
+ | ... | ||
+ | </ | ||
+ | < | ||
+ | export default { | ||
+ | data: () => { | ||
+ | return {isMenuActive: | ||
+ | }, | ||
+ | methods: { | ||
+ | toggleMenu () { | ||
+ | this.isMenuActive = !this.isMenuActive | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | {{: | ||
+ | {{: | ||
+ | *これで、トグルするようにはなったのですが、リンク先の飛んでも、メニューが開いたままになってしまっています。 | ||
+ | *そこで、『ページ遷移』(=リンクがクリックされる)したときに、メニューが閉じる(isMenuActiveプロパティがfalseになる)ようなプログラムを実装します。 | ||
+ | *このときに、Vuexを用いると、コンポーネント間の" | ||
- | https:// | + | 詳細はhttps:// |
- | @OvThAlmin | + | |
- | 2018年10月28日に更新 | + | *Nuxt.jsアプリでは、< |
- | nuxt-fontawesomeを使って Nuxt.jsへFont Awesome 5を導入する | + | |
- | →これがよさそうです。やってみます。 | + | |
- | -Add Dependencyから、nuxt-fontawesome, | + | ===== Vuexストアを設定する ===== |
- | -nuxt.config.jsに以下を追記 | + | isMenuActiveプロパティの状態(trueかfalseか)を、Vuexストアで管理します(状態管理)。 |
+ | Nuxt.jsには、デフォルトの状態でVuexが入っており、store/ | ||
+ | 『クラシックモード』と、『モジュールモード』があるらしいです。 | ||
+ | |||
+ | 参考:https:// | ||
+ | {{:18.nuxt.jsとbulmaでハンバーガーメニュー: | ||
+ | |||
+ | store/index.js (新規作成) | ||
< | < | ||
- | module.exports = { | + | import Vuex from 'vuex' |
- | | + | |
- | | + | |
- | ], | + | |
+ | const store = () => new Vuex.Store({ | ||
+ | state: { | ||
+ | isMenuActive: | ||
+ | }, | ||
+ | mutations: { | ||
+ | toggleMenu (state) { | ||
+ | state.isMenuActive = !state.isMenuActive | ||
+ | }, | ||
+ | resetMenu (state) { | ||
+ | state.isMenuActive = false | ||
+ | } | ||
+ | } | ||
+ | }) | ||
- | //この部分を追記 | + | export default store |
- | fontawesome: { | + | </code> |
- | imports: [ | + | {{: |
- | { | + | *layouts/Navbar.vueを編集して、ハンバーガーメニューをクリックすると$storeのtoggleMenu関数を実行し、また、navbar-burgerとnavbar-menuの開閉状態をisMenuActiveプロパティで制御しておくようにします。 |
- | set: '@fortawesome/free-solid-svg-icons' | + | < |
- | | + | ... |
- | } | + | <div class=" |
- | | + | ... |
+ | <div class=" | ||
+ | ... | ||
+ | </code> | ||
+ | {{: | ||
+ | *VisualStudioCodeのターミナル画面で、一度、Ctrl+C => Y => Enterで、サーバを停止したのち、再度、< | ||
+ | {{: | ||
+ | |||
+ | ===== ページ遷移したときにトグルが閉じるようにする ===== | ||
+ | |||
+ | ページ遷移したとき、すなわち、新しいページが描画されてfetch()メソッドを呼び出されたときにトグルが閉じるように(isMenuActiveがfalseになるように)します。 | ||
+ | 具体的には、各pages/ | ||
+ | < | ||
+ | < | ||
+ | export default { | ||
+ | fetch({ store }) { | ||
+ | | ||
} | } | ||
- | } | + | }; |
+ | </ | ||
</ | </ | ||
+ | pages/ | ||
+ | {{: | ||
+ | pages/ | ||
+ | {{: | ||
+ | pages/ | ||
+ | {{: | ||
+ | |||
+ | 今回は以上となります。 | ||
+ | |||
+ | ===== ソースコード ===== | ||
+ | ソースコード | ||
+ | https:// | ||
+ | |||
+ | スクリーンショット | ||
+ | {{: | ||
+ | |||
+ | ===== 今回写経させていただいたサイト ===== | ||
+ | https:// | ||
+ | {{: | ||
+ | |||
+ | |||
+ | |||
- | {{: | ||
- | {{: | ||
- | {{: | ||
- | {{: | ||
- | {{: | ||
- | https:// | ||
行 146: | 行 263: | ||
目次: | 目次: | ||
- | 前: | + | 前:[[17.nuxt.jsのvuexでパスワード制限: |
- | 次: | + | 次:[[19.nuxt.jsで画像一覧アプリ: |
18.nuxt.jsとbulmaでハンバーガーメニュー/index.html.1549640186.txt.gz · 最終更新: 2019/02/08 by adash333