プロジェクト中、プログレスバーを実装するために js の requestAnimationFrame メソッドを使用し始めましたが、データが多い場合にパフォーマンスに大きな影響を与えたため、CSS を使用して実装し、最適化しました。 まずコードを貼り付けます: <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <meta name="viewport" content="width=デバイス幅、初期スケール=1.0"> <meta http-equiv="X-UA-compatible" content="ie=edge"> <title>ドキュメント</title> <スタイル タイプ="text/css"> *{マージン: 0;パディング: 0} .box{幅: 100px;高さ: 10px;境界線の半径: 10px;背景: #999;余白: 100px 自動;境界線: 1px 実線 #ff6780;} .child{位置: 相対;高さ: 100%;境界線の半径: 継承;} .process-animate{background: #ff6780;position: absolute;left: 0;top: 0;bottom: 0;border-radius:inherit; アニメーション: 1 秒の線形順方向処理; } @キーフレーム処理 { 0%{ 左:0;右:100%; } 20% 右:80% } 40% 右:60%; } 60%{右:40%;} 80%{右:20%;} 100%{右:0;} } </スタイル> </head> <本文> <div class="box"> <div class="child" style="width:50%"> // 子のパーセンテージはプログレスバーの割合です<p class="process-animate"></p> </div> </div> </本文> </html> 効果図 (動的効果を表示するにはコードをコピーします): 通常の状況では、パーセンテージは背景データに基づいて計算される必要があるため、動的に渡されます。Vueコードは以下に掲載されています。 プログレスバーのサブコンポーネント (progress.vue): <テンプレート> <div class="プロセスラッパー" :class="{'addGray':addGray}"> <div class="process-child" ref="processChild"> <p class="process-animate" :class="{'addGray':addGray}"></p> </div> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ 小道具: { グレーを追加: { //グレー型: ブール値、 デフォルト: false }, 進捗幅: { //進捗バーのパーセンテージタイプ: 数値、 デフォルト: 0 } }, マウント() { this.$nextTick(() => { console.log(this.addGray, "addGray---"); this.$refs.processChild.style.width = this.progressWidth + "%"; // 進行状況バーを動的に変更します // this.$refs.processChild.style.width = 90 + "%"; 効果をテストします}); } }; </スクリプト> <style lang="scss" スコープ> .プロセスラッパー{ 幅: 1.98rem; 高さ: 0.13rem; マージン: 0.12rem 0 0.1rem 0; 境界線の半径: 0.1rem; 背景: #fff; 境界線: 0.01rem 実線 #ff6780; &.addGray{ 背景: #999; 境界線: 0.01rem 実線 #999; } .プロセス子 { 位置: 相対的; 高さ: 100%; // width: 100%; //この幅は動的に変化します。 border-radius: inherit を js 経由で変更します。 .process-animate { 背景: #ff6780; 位置: 絶対; 左: 0; 上: 0; 下部: 0; 境界線の半径: 継承; アニメーション: 1 秒の線形順方向処理。 &.addGray{ 背景: #999 !重要; // 境界線: 0.01rem 実線 #999; } } } } @keyframes プロセス { 0% { 左: 0; 右: 100%; } 20% { 右: 80%; } 40% { 右: 60%; } 60% { 右: 40%; } 80% { 右: 20%; } 100% { 右: 0; } } </スタイル> 親コンポーネントの呼び出し: <!-- 進捗状況バー --> <進行状況:addGray="非アクティブ":progressWidth="進行状況Width"></進行状況> 実際の効果をご覧ください: 以上、CSS を完璧に使用して、JS 再帰アニメーションのパフォーマンス消費を解決します。 CSS3 を使用してプログレス バー効果を実現し、動的にパーセンテージを追加する方法については、これで終わりです。CSS3 プログレス バーに動的パーセンテージ コンテンツを追加する関連情報については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
<<: Vue.js スタイルレイアウト Flutter ビジネス開発共通スキル
成熟したデータベース アーキテクチャは、最初から高可用性、高スケーラビリティなどの機能を備えて設計さ...
/etc/docker/daemon.json を編集し、以下を追加します。 { "ストレ...
目次物語の始まりvimをインストールし、hadoop-hive.envを編集します。不注意で回避しま...
目次序文コンポーネントライブラリの作成主要な構成の変更ディレクトリレイアウトの調整ライブラリ構築のた...
「読み取り専用」と「無効」はどちらも、ユーザーがフォーム フィールドの内容を変更できないようにします...
序文: MySQL マスター/スレーブ アーキテクチャは、最も一般的に使用されるアーキテクチャ セッ...
序文:最近、インスタンスの移行の問題に遭遇しました。データの移行後、データベースのユーザーと権限も移...
最近、Docker がコンテナの起動時に特定のプロセスを直接実行できるようにする方法を調べていたとこ...
この記事では、js+canvasコードの雨効果の具体的なコードを参考までに共有します。具体的な内...
注意:この記事は現在取り組んでいる nestjs+graphql+serverless 合宿における...
MySQL 5.7 を使用すると、Web ターミナル経由でデータベースに中国語の文字を書き込むと文字...
目次序文1. 型2. インスタンス3. コンストラクター詳細: 4. 文字列要約する序文Javasc...
ソングティ: SimSun太字: SimHeiマイクロソフト YaHei: マイクロソフト YaHe...
起源最近、私は要件 A に取り組んでいます。そこには、次のように記述される小さな機能ポイントがありま...
ネイティブ JS で実装したリアルタイム クロック エフェクトを共有します。エフェクトは以下のとおり...