1. 実施の背景先週、ユーザーがタスクを完了して紅包を受け取るアクティビティで、ユーザーがボタンをクリックした後に紅包を受け取るためのポップアップウィンドウを実装する必要がありました。ポップアップウィンドウが閉じられ、ユーザーが元のページに戻ったとき、ページ上の残高数字が各桁をスクロールする効果を表示する必要がありました。 2. 実装のアイデア実際には、ロールされた n 桁の数字をロールする各数字に分割し、各桁にロールされた対応する数字を含むコンテナーを動的に作成し、それを受信ターゲット コンテナーに格納します。対応する数字へのスクロールは、0 から対応する数字までの間隔で 3. 実施プロセスカプセル化する必要があるため、 /** * デジタルスクロール効果を実装するクラス*/ クラス DigitScroll { コンストラクタ(オプション) { // コンテナの DOM を取得します。取得できない場合はエラーがスローされます。this.container = document.querySelector(options.container); if (!this.container) { Error("コンテナがありません")をスローします。 } this.container.style.overflow = "非表示"; this.container.style.display = "flex"; // 表示されるコンテナの高さはスクロール間隔でもあります。コンテナの高さを設定する必要があります。設定しない場合は、デフォルトは 30px です。 this.rollHeight = parseInt(getComputedStyle(this.container).height) || 30; this.container.style.height = this.rollHeight + "px"; } ロール(数値) { // 渡された数字をスクロール対象として分割し、各数字のコンテナを初期化します。this.initDigitEle(num); const numEles = this.container.querySelectorAll(".single-num"); // 各桁のスクロールキューをトラバースして生成します。たとえば、スクロールが 7 に達した場合、スクロールアニメーション用に 0、1、2、3、4、5、6、7 のコンテンツを持つ 7 つの div を生成します [...numEles].forEach((numEle, index) => { 定数curNum = 0; targetNum = Number(this.numberArr[index])とします。 (現在の数値 >= 目標数値) の場合 { ターゲット数 = ターゲット数 + 10; } cirNum = curNum とします。 // ドキュメントフラグメントをまとめて一度にノードに挿入します。constfragment = document.createDocumentFragment(); // 0からターゲット番号に対応するdivを生成します (targetNum >= cirNum) の場合 { const ele = document.createElement("div"); ele.innerHTML = cirNum % 10; cirNum++; フラグメント.appendChild(ele); } numEle.innerHTML = ""; numEle.appendChild(フラグメント); //位置をリセット numEle.style.cssText += "-webkit-transition-duration:0s;-webkit-transform:translateY(0)"; タイムアウトを設定する(() => { numEle.style.cssText += `-webkit-transition-duration:1s;-webkit-transform:translateY(${ -(ターゲット番号 - 現在の番号) * this.rollHeight }px);`; }, 50); }); } // コンテナを初期化する initDigitEle(num) { // 数値の桁を分割する const numArr = num.toString().split(""); // ドキュメントフラグメントをまとめて一度にノードに挿入します。constfragment = document.createDocumentFragment(); numArr.forEach((項目) => { 定数el = document.createElement("div"); // 数字はスクロールされますが、. などの数字以外の文字はスクロールされません if (/[0-9]/.test(item)) { el.className = "single-num"; el.style.height = this.rollHeight + "px"; el.style.lineHeight = this.rollHeight + "px"; } それ以外 { el.innerHTML = アイテム; el.className = "移動なし"; el.style.verticalAlign = "下"; } // el.style.float='左'; フラグメント.appendChild(el); }, []); this.container.innerHTML = ""; this.container.appendChild(フラグメント); //スクロールする数字を保存します。this.numberArr = numArr.filter((item) => /[0-9]/.test(item)); } } これで、JavaScript を使用してスクロールバランスの数字を実現する方法についての記事は終了です。JavaScript を使用してスクロールバランスの数字を実現する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: html+css3で実装されたログインインターフェース
>>: メタを使用してトラフィックキャッシュをキャンセルし、ページにアクセスするたびにページを更新して簡単にデバッグできるようにします。
導入増分バックアップとは、完全バックアップまたは最後の増分バックアップの後、後続の各バックアップでは...
この記事では、キャンバスでスクラッチカード効果を描画するための具体的なコードを参考までに共有します。...
この記事では、水平傾斜棒グラフを実装するためのVueの具体的なコードを参考までに共有します。具体的な...
ヒント: MySQL では、ユーザーの作成と削除が頻繁に必要になります。ユーザーを作成するときは、通...
rpmコマンドがソフトウェアのインストールに使用するパラメータはどれですか: -i rpm コマンド...
目次オブザーバーパターンとは何ですか?シナリオシミュレーションコードの実装コードのリファクタリング要...
目次1. 新しいプロジェクトを作成する2. 依存関係を追加する3. SpringコンテナにDrive...
目次まず効果を見てみましょう:成し遂げる:要約:まず効果を見てみましょう: 成し遂げる: 1. ナビ...
最近、WeChatミニプログラムは、監査ミニプログラムのwx.loginおよびwx.getUserI...
1. インデックスの原則インデックスは、列内の特定の値を持つ行をすばやく見つけるために使用されます。...
rpm インストール方法を使用して MySQL データベースをインストールした後、データ ファイルの...
1. 原因:サブボックスをフロートに設定した後の効果: 青いボックスをフロートに設定すると、標準のド...
目次一致と不一致一致するすべてが平等ではない平等と不平等等しい等しくない一致と不一致シンボルの両側の...
Nginx ロード バランシング サーバー: IP: 192.168.0.4 (Nginx-Serv...
序文インターネット上にはデータベースの最適化に関する情報や方法が数多くありますが、その多くは品質にば...