作ろうとしているもの
今、Nuxtを使って簡単なホームページのようなものを作ろうとしています。
ヘッダー部分にナビゲーションとしてボタンを並べていて、スマホサイズの時はそれらをハンバーガーメニューの中にしまいたいです。
そこで下記のようなコードを書きました。
layouts/default.vue <template> <v-app dark> <v-app-bar clipped-right fixed app> <template v-for="item in items"> <v-btn v-show="!isMobile" :key="item.title" tile text height="100%" :to="item.to" >{{ item.title }}</v-btn > </template> <v-spacer /> <v-btn icon @click.stop="rightDrawer = !rightDrawer" v-show="isMobile"> <v-icon>mdi-menu</v-icon> </v-btn> </v-app-bar> <v-content> <v-container> <nuxt /> </v-container> </v-content> <v-navigation-drawer clipped v-model="rightDrawer" right temporary fixed width="100%" > 。。。
データには {title: "Home", to: "/"}
などといったオブジェクトの配列が items
として用意してあり、 isMobile
については computed
内で
computed: { isMobile() { return this.$vuetify.breakpoint.xs } }
のように書いています。
起こっていること/お聞きしたいこと
上記のコードをスマホから開くと、PC画面の時と同じように一瞬ヘッダー内にボタンが描画されたあと、ハンバーガーメニューが出てきます。(コードでいうと <template v-for=~ >
の部分)。
これをスマホから開いたときにラグなしに一発でスマホ用レイアウトが描画されるようにしたいです。
試したこと
isMobileの参照されるタイミングが悪いのかと思って、いろいろbeforeMountでdataに入れたものを監視するようにしてみたり、 v-cloak
を使ってみたりしたのですが、解決しませんでした。
根本的なことのミスかもしれませんが、解決方法をご教示いただければさいわいです。
宜しくお願い致します!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/18 15:49
2020/02/18 16:06