目次
vue2-loading-barとは
vue2-loading-barは、YouTubeのようなローディングバーを実装するコンポーネントライブラリです。
【動画サイズ:34KB】
環境
この記事は、以下の管理人の検証環境にて記事にしています。
| vue.js | 2.6.10 |
| vue2-loading-bar.min.js | 0.0.1 |
ライブラリの取得
ライブラリを取得するには、npm, CDNのどれか一つを使用します。
npm
npm install vue2-loading-bar
CDN
<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/vue2-loading-bar.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/src/css/loading-bar.css">
gitリポジトリは以下から取得できます。
導入手順
管理人が行った、動作確認サンプルを実装するために、以下の手順でソースコードを導入していきます。
このサンプルでは、YouTubeのようなローディングバーを実装します。
step
1ライブラリの呼び出し
まずライブラリを呼び出す為に、以下で呼び出します。
const LoadingBar = window['LoadingBar'];
step
2メソッドを設定
components に上記にで取得した LoadingBar を設定します。
new Vue({
el: '#app',
components: {
LoadingBar: LoadingBar
},
data: {
progress: 0,
error: false,
direction: 'right'
},
methods: {
progressTo: function (val) {
this.progress = val;
},
setToError: function (bol) {
this.error = bol;
},
changeDirection: function (direction) {
if(this.progress >= 0){
this.progress = 100;
}
this.direction = this.direction === 'right' ? 'left' : 'right';
},
errorDone:function(){
this.error = false
},
progressDone:function() {
this.progress = 0
},
},
mounted: function () {
var me = this;
me.progress = 10;
for (var i = 0; i < 30; i++) {
if(i > 20 && i < 29){
setTimeout(function () {
me.progress += 5;
},50*i);
}else{
setTimeout(function () {
me.progress ++;
},10*i);
}
}
setTimeout(function () {
me.progress = 100;
},1500);
}
});
step
3テンプレートを準備
<loading-bar>コンポーネントを設置します。
各種プロパティの説明はこちら
サンプルはケバブケースで記載しています。
<div id="app">
<loading-bar
:on-error-done="errorDone"
:on-progress-done="progressDone"
:progress="progress"
:direction="direction"
:error="error" >
</loading-bar>
<div>
<p align="center">Progress is {{ progress }}%</p>
<div class="button-container">
<button type="button" @click="progressTo(30)">Progress to 30</button>
<button type="button" @click="progressTo(50)">Progress to 50</button>
<button type="button" @click="progressTo(100)">Progress to 100</button>
<button type="button" @click="changeDirection">Change Direction</button>
<button class="error" type="button" @click="setToError(true)">Give An Error</button>
</div>
</div>
</div>
サンプル
今回のソースを実際に触って確認できるようにデモを用意しました。
See the Pen Vue.jsでYouTubeのようなローディングバーを実装する「vue2-loading-bar」 by カバの樹 (@kabanoki) on CodePen.dark
さいごに
YouTubeのようなローディングバーを実装するコンポーネントライブラリでした。
今日はこの辺でー