Vue は動的なプログレスバー効果を実現します

Vue は動的なプログレスバー効果を実現します

この記事では、動的なプログレスバー効果を実現するためのVueの具体的なコードを例として紹介します。具体的な内容は次のとおりです。

デモンストレーション効果:

構造

進捗状況/index.js

const コントローラ = {
  初期化: require('./controllers/html'),
  速度: require('./controllers/speed')
}
exports.init = コントローラ.init
exports.speed = コントローラ.speed

進捗状況/コントローラ/html/index.js

エクスポート.set = () => {
  dom = document.createElement('div') とします。
  dom.setAttribute('id', 'progress_speed')
  dom.classList.add('progress-box', 'progress-hide')
  dom.innerHTML = '<div class="progress progress-speed-hide" id="progress_box_speed"><div class="speed" style="width:0%;background: #f2f3f5;transition: 0.2s;"></div></div>'
  document.getElementById('app').insertBefore(dom、document.getElementById('app').firstChild) の順にクリックします。
  スタイル = `
              .progress-box{
                幅: 100%;
                高さ: 100%;
                遷移: 0.4秒;
                位置: 固定;
                上: 0;
                左: 0;
                背景: rgba(0,0,0,0.5);
                zインデックス:4002;
              }
              。進捗 {
                境界線の半径: 19px;
                背景: #f2f3f5;
                幅: 80%;
                高さ: 38px;
                位置: 固定;
                上: calc(50% - 19px);
                左: 計算(50% - 40%)
                zインデックス:2000;
                遷移: 0.4秒;
                不透明度: 1;
              }
              .progress-hide{
                境界線の半径: 19px;
                幅: 0%;
                高さ: 0%;
                上: calc(50% - 0%);
                左: 計算(50% - 0%);
                遷移: 0.2秒;
                オーバーフロー: 非表示;
              }
              .進行速度非表示{
                幅: 0%;
                高さ: 0px;
                遷移: 0.6 秒;
                不透明度: 0;
                オーバーフロー: 非表示;
              }
              。スピード {
                境界線の半径: 19px;
                背景画像: -webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,透明 25%,透明 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,透明 75%,透明);
                背景画像: -o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,透明 25%,透明 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,透明 75%,透明);
                背景画像: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
                高さ: 38px;
                -webkit-背景サイズ: 40px 40px;
                背景サイズ: 40px 40px
                幅: 0%;
                遷移: 0.3秒;
                背景色:#409EFF;
                -o-animation: プログレスバーストライプ 2s 線形無限;
                アニメーション: プログレスバーストライプ 2 秒 線形 無限;
              }
              .スピード成功{
                幅: 100%;
                背景色: #67c23a;
              }
              @-webkit-keyframes プログレスバーのストライプ {
                  から {
                      背景位置: 40px 0
                  }
              
                  に {
                      背景位置: 0 0
                  }
              }
              
              @-o-keyframes プログレスバーストライプ {
                  から {
                      背景位置: 40px 0
                  }
              
                  に {
                      背景位置: 0 0
                  }
              }
              
              @keyframes プログレスバーのストライプ {
                  から {
                      背景位置: 40px 0
                  }
              
                  に {
                      背景位置: 0 0
                  }
              }`
  styleElement = document.getElementById('progress') とします。
  スタイル要素の場合
    styleElement = document.createElement('style')
    styleElement.type = 'text/css'
    styleElement.id = '進捗状況'
    document.getElementsByTagName('head')[0].appendChild(styleElement)
    styleElement.appendChild(document.createTextNode(スタイル))
  }
}

進捗/コントローラ/スピード/index.js

exports.run = (時間) => {
  document.getElementById('progress_speed').classList.remove('progress-hide')
  時間 = 時間 * 100
  dom = document.getElementById('progress_box_speed') とします。
  dom.classList.remove('進行速度を非表示')
  dom.getElementsByClassName('speed')[0].classList.remove('speed-success')
  タイムアウトを設定する(() => {
    dom.getElementsByClassName('speed')[0].setAttribute('style', 'width:' + time + '%')
  }, 10)
  (時間 >= 100) の場合 {
    タイムアウトを設定する(() => {
      dom.getElementsByClassName('speed')[0].classList.add('speed-success')
      dom.getElementsByClassName('speed')[0].setAttribute('style', 'width:100%')
      dom.classList.add('進行速度を非表示')
      タイムアウトを設定する(() => {
        document.getElementById('progress_speed').classList.add('progress-hide')
        dom.getElementsByClassName('speed')[0].setAttribute('style', 'width:0%')
      }, 900)
    }, 1000)
  }
}

使い方は?

main.js にインポートします (独自の新しいファイルのパスに基づきます。これは私の独自のパスです)

'./common/progress' から進捗状況をインポートします

グローバルマウント

Vue.prototype.$progress = 進行状況

構造

使用:

this.$progress.init.set()
this.$progress.speed.run('10.555555') // 進捗バーは10.555555%に達します

進行状況バーが 100 に達すると、自動的に非表示になります。グローバルにマウントして、プログレス バーが必要な場所ならどこでも使用できます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • VueプロジェクトでReactを書く方法の詳細
  • Vue+element はローカル検索機能付きのドロップダウン メニューを実装します
  • vue で wangEditor を使用する方法と、データをエコーし​​てフォーカスを取得する方法
  • vue3とvue2の利点の比較
  • Vue は動的な円形のパーセンテージ進捗バーを実装します
  • Vueはパーセンテージバー効果を実現します
  • Vueでドラッグ可能なコンポーネントを実装する方法
  • Vue でコミュニケーションを実装する 8 つの方法

<<:  データベース管理に役立つ 5 つの MySQL GUI ツール

>>:  MySQL バックアップ スクリプトの書き方

ブログ    

推薦する

Alibaba Cloudのセキュリティルール設定の詳細な説明

2日前、ダブル11ショッピングフェスティバルを利用して、Alibaba CloudでECS(サーバー...

MySQLの構文、特殊記号、正規表現の詳細な説明

Mysql でよく使用される表示コマンド1. 現在のデータベース サーバー内のデータベースの一覧を表...

Vueはフィルターを使用して日付をフォーマットします

この記事では、フィルターを使用して日付をフォーマットするVueの具体的なコードを参考までに紹介します...

開発者がデータベースロックを詳細に理解する必要がある理由

1.ロックしますか? 1.1 ロックとは何ですか?ロックの本当の意味は、鍵またはコードで開くことがで...

21 の MySQL 標準化および最適化のベスト プラクティス!

序文良い習慣はすべて宝物です。この記事は、SQL の後悔の治療法、SQL パフォーマンスの最適化、S...

DockerにMySQL 8.0をインストールする方法

環境: MacOS_Cetalina_10.15.1、Mysql8.0.18、Docker_2.0....

Linux システムの最適化 (カーネルの最適化) に関するいくつかの提案

スワップを無効にするサーバーがデータベース サービスまたはメッセージ ミドルウェア サービスを実行し...

検索エンジンのウェブサイトの入り口の無料コレクション

1: Baiduウェブサイトログイン入口ウェブサイト: http://www.baidu.com/s...

JavaScript でじゃんけんゲームを書く

この記事では、JavaScriptでじゃんけんゲームを書くための具体的なコードを参考までに紹介します...

Linux サーバー上の hosts ファイル構成の詳細な説明

Linux サーバーのホスト ファイルの構成hosts ファイルは、Linux システム内の IP ...

Linux lseek関数の使い方の詳しい説明

注:記事に誤りがある場合は、メッセージを残して指摘してください。ご協力ありがとうございます。名前名前...

Vueでフォーム検証を実装する方法

1. インストールと使用まず、Vue プロジェクトにインストールします。 npm インストール --...

img usemap 属性 中国地図リンク

HTML img タグ: Web ページに導入される画像を定義します。興味深い usemap 属性も...

画像ファイルの形式とその選択方法

1. どの 3 つの形式ですか?それぞれ、gif、jpg、png です。画像ファイルを最適化すること...