CSS3を使用してプログレスバー効果を実現し、動的にパーセンテージを追加する

CSS3を使用してプログレスバー効果を実現し、動的にパーセンテージを追加する

プロジェクト中、プログレスバーを実装するために 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 ビジネス開発共通スキル

>>:  HTML メタビューポート属性の詳細な説明

推薦する

JavaScript における正規表現の実際的な応用の詳細な説明

実際の業務では、JavaScript の正規表現が依然として頻繁に使用されます。したがって、この部分...

ドラッグ効果を実現するための純粋なCSSコード

目次1. ドラッグ効果の例2. CSS実装の原則3. CSS実装の詳細4. CSSレイアウト1. 固...

mysql ステートメントを使用してユーザー権限を照会するプロセスの詳細な説明

MySQL では、ユーザーに付与された権限をどのように確認しますか? ユーザーに付与される権限は、グ...

パーソナライズされた検索エンジンを使用して、必要なパーソナライズされた情報を検索します

現在、多くの人がインターネット上で生活しており、インターネットで情報を検索することは日常的な作業とな...

MySQLの保存場所を新しいディスクに移行する方法

1. 新しいディスクを準備し、現在のルートパーティションと同じファイルシステムでフォーマットし、ディ...

画像ブラインド表示の効果を実現するための純粋な CSS の例

まず、完成した効果をお見せしましょう 主なアイデア: 実際、このブラインドは一種の手品を使用していま...

PHP+nginx サービス 500 502 エラーのトラブルシューティングのアイデアの詳細な説明

概要オンラインサービスへのアクセス中に 500 または 502 エラーが発生した場合、緊急処理とトラ...

一般的なMySQLコマンドの概要

mysqlrootパスワードの設定と変更初めて MySQL データベースに入ります。 !環境変数にm...

jQuery+h5 で 9 マス抽選特殊効果を実現 (フロントエンドとバックエンドのコード)

序文:フロントエンド: jq+h5 で 9 グリッドのダイナミック効果を実現バックエンド: thin...

SQL文のパフォーマンスを分析するための標準的な要約

この記事では、explain を使用して SQL ステートメントを分析する方法を紹介します。実際、イ...

実践的な経験を共有するためのコードチェックツールstylelintの紹介

目次序文文章1. stylelintをインストールする2. 設定ファイル3. stylelintを使...

IE6 で JS エラーが発生し、CSS が適用されない HTML エンコードの問題の解決策

テストでは、ページ定義がutf-8でエンコードされている場合、 js ファイルに中国語などのマルチバ...

JSはリクエストディスパッチャーを実装する

目次抽象化と再利用シリアルセグメントシリアル、セグメントパラレル要約するはじめに: JS は当然並列...

MySQLコンテナ間のレプリケーション構成例の詳細な説明

背景先週、会社で MySQL レプリケーションのトレーニングを受けたので、今週末は学んだことを実践す...

知っておくべき JS 配列削減の高度な使い方 25 選

序文Reduce は ES5 で追加された新しい従来の配列メソッドの 1 つです。forEach、f...