はじめに
Vue.jsでローディング画面を実装する方法をサンプルコード付きでまとめました。
今回ローディングのモジュールはvue-loading-templateを使っています。
デモはこちらから確認出来ます。
環境
OS:macOS Catalina 10.15.1Vue:2.6.10vue-cli:4.1.1vue-router:2.6.10vuex:3.1.2vuetify:2.1.0
vue-loading-templateのインストール
$ yarn add vue-loading-template
1.src/App.vue
App.vue
<template><v-app><Loadingv-show="loading"></Loading><Homev-show="!loading"></Home></v-app></template><script>importLoadingfrom'@/components/Loading'importHomefrom'./views/Home'exportdefault{name:'App',data(){return{loading:true,}},mounted(){setTimeout(()=>{this.loading=false;},1000);},components:{Loading,Home,},};</script>
前提
Vuetifyを使用しているので、
<v-app>
でくくられているLoading
はローディング画面コンポーネントHome
はアプリケーション本体をまとめているコンポーネント
ローディング画面の切り替え方法
v-show
を使用し、変数loading
がtrue
かfalse
かでローディング画面の表示・非表示を行う切り替えは
mounted
を使用mounted
はDOMの作成が完了した段階で発動するので、
DOMの作成が完了した段階でloading
がfalse
になり、ローディング画面が非表示になる
2.src/components/Loading.vue
こちらがローディング画面のコンポーネントです。
Loading.vue
<template><divv-show="loading"><divclass="fullview"><divclass="loading-spacer"></div><vue-loadingtype="spiningDubbles"color="#aaa":size="{ width: '100px', height: '100px' }"
>
</vue-loading></div></div></template><script>import{VueLoading}from'vue-loading-template'exportdefault{name:'loading',components:{VueLoading,},}</script><style>.fullview{width:100%;height:100%;background:#fefefe;position:fixed;top:0;left:0;}.loading-spacer{height:30%;}</style>
VueLoading
をインポート<vue-loading>
内で各種オプションを指定し、ローディングアニメーションの種類・色や大きさを指定<div class="loading-spacer">
はローディングアニメーションを画面上部から任意の位置に持ってくるために利用
おわりに
最後まで読んで頂きありがとうございました
ローディングアニメーションはspiningDubblesが好きです