この記事では、プロセスの進行状況バーの読み込み効果を実装する簡単な方法を提供します。これを使用して、ページ上の時間のかかるタスクの完了の進行状況をより適切にフィードバックできます。この関数を実装するには、まず、次のような静的なプログレス バー効果を実装する方法を検討する必要があります。
これは比較的単純で、2 つの div だけで、公式のブートストラップです。複数のテーマを備えた進行状況バー コンポーネントを提供します。自分で使いたい場合は、他の人のコードを参考にして自分流に書いてみると実はとてもわかりやすいです:
.progress { height: 20px; background-color: #f5f5f5; border-radius: 4px; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);}.progress-bar { float: left; width: 0; height: 100%; font-size: 12px; line-height: 20px; color: #fff; text-align: center; background-color: #337ab7; box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); position: relative; border-radius: 4px;}
2 番目のステップは、進捗の計算方法を検討することです。リソースの読み込みを例にとると、クライアントの場合、通常、リソースの実際のサイズを読み取る権限があるため、読み込みの進行状況を計算するときは、読み込まれたデータの量を合計量で割るだけで済みます。 ; ただし、Web ページでは、ロードするリソースのサイズを取得する機能がないため、ロードされるリソースの数を総数で割る、より精度の低いソリューションを使用することしかできません。リソースの。次の計算方法に基づいて、時間のかかる各タスクが完了した時点で完了したタスクの進行状況を計算し、対応する進行状況バーの幅を設定するだけです。
以下では、タイマーを使用して、同時に開始されるが、このステップの機能を実装するために完了するまでに異なる時間が必要な 4 つの非同期タスクをシミュレートします。
<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <link href="loader.css" rel="stylesheet"></head><body><div id="loader" class="loader"> <div class="progress"> <div class="progress-bar progress-bar-striped"> <div class="progress-value"></div> </div> </div></div></body><script src="jquery.js"></script><script> var $bar = $('#loader').find('.progress-bar'); var $value = $bar.find('.progress-value'); var Task = function (index, duration) { setTimeout(function () { var p = (index / 4 * 100).toFixed(0) + '%'; $bar.css('width',p); $value.text(p); console.log('第' + index + '个异步任务执行完毕'); }, duration); }; //模拟四个同时发起的异步任务 var task1 = new Task(1, 1000); var task2 = new Task(2, 3000); var task3 = new Task(3, 5000); var task4 = new Task(4, 7000);</script></html>
実際の効果は次のとおりです。 :
このステップに到達すると、基本的なプログレス バーの読み込み関数が実際に実装されました。ただし、上記の効果はあまり良い体験とは言えないようなので、このプログレスバーの進捗値を次のように連続的に変更できれば最高です:
このステップを実現するために、トランジションを使用することを考える人もいるかもしれませんが、プログレスバーに幅 .2s のようなトランジションを設定することで、プログレスバーの幅が変化したときに、自然に効果が確認できます。進行状況バーが継続的に変化します。このアプローチには 2 つの問題があります:
1. 遷移によって数値をある値から別の値に移行できないため、数値を連続的に変更することはできません;
2. 進行状況バーが表示されない100% にロードします。時間のかかるタスクの完了の進行状況が 100% の場合、進行状況バーの幅を 100% に設定することに加えて、通常は進行状況バーを非表示または削除するロジックがあり、進行状況バーには遷移 元の幅から 100% に遷移するには一定の時間がかかるため、ユーザーには 100% が表示されません。
ただし、これら 2 つは大きな問題ではありません。進行状況番号のない進行状況バーも非常に一般的です。また、進行状況バーが 100% 未満のときにメイン関数シーンに入る影響も非常に一般的です。この効果により、ユーザーはロードが非常に速いと錯覚することがあります。 。
上記の 2 つの問題に対処したい場合、継続的な変更を満足できる数値と進行状況を持ち、進行状況バーが読み込み効果を 100% 表示した後にのみメイン シーンに入る関数を実装する方法?次の同様の効果と同様です:
この要件では、注意する必要がある点が 2 つあると思います:
まず、タスクが完了しました この時点では、残りのタスクがまだ完了していない可能性があります。この時点では、進行状況バーは待機状態になります。次の読み込みが表示される前に、他のタスクが完了し、新しい進行状況が表示されるまで待つ必要があります効果;
#プログレスバーが 100% までロードされたときのコールバック コントロールです。タスク完了の進捗状況が 100% の場合、プログレス バーが 100% にならない場合があります。プログレス バーが表示されるまでに時間がかかります。現在の値から 100% に変更するには、メイン シーンに入るなど、タスク完了の進捗状況が 100% のときに追加される一部のロジックは、プログレス バーが 100% にロードされた時点で処理する必要があることがわかります。
上記を踏まえた私のアイデアは次のとおりです:
1. 時間のかかるタスクの完了ごとに進行状況の値が対応するため、進行状況バーの変化を複数のセグメントに分割します。これらの値は 0 より大きく 100 以下であり、時間のかかる 4 つのタスクを例として、進行状況バーを 0 ~ 25、25 ~ 50、75 ~ 100 の 3 つのセグメントに分割します。
##2. ステップ 1 のセグメント化を抽象化する これは進行状況バーを備えたロード タスクになり、このタスクには 2 つの基本属性 (ロード時間と変更間隔) があります。このタスクをアニメーションにします。アニメーションの各実行中に、外部にコールバックを提供し、現在の進行状況値を渡して進行状況バーの幅を設定します。現在の進行状況の値は、アニメーションの実行時間、読み込み時間、変更間隔に基づいて計算できます。変更間隔は、ステップ 1 のパーセント範囲に対応します。ロード時間は、間隔範囲 * プログレス バーが 1% ロードされるのに必要な時間を変更することで計算できます。つまり、アニメーションの 1% をロードするのに必要な時間は一定と見なす必要があります。利便性を高めるため、アニメーションを 0 から 100% までロードするのに必要な時間が、より適切に制御するための定数として使用されます。3. ステップ 2 の抽象読み込みタスクを格納するキューを定義します。キュー内の最初のタスクの実行タイミングを制御します。タスクが実行されるたびに、次のタスクが自動的に実行されます。
4. タスクの進捗が 100% になり、キュー内の最後のタスクが完了したら、コールバックを外部に通知します。
このデモの実際の効果は、前の gif とまったく同じです。
これまでのところ、比較的実用的に見える進行状況バーの読み込み効果を制御するコンポーネントができました。ただし、問題がないわけではなく、プログレス バーのロードにかかる時間が、手順 2 で設定したプログレス バーを 0 から 100% まで一気にロードするのにかかる時間よりも確実に長くなるという問題があります。時間。言い換えれば、このアプローチは、時間のかかるタスクのプロセス全体を意図的に遅らせることになります。したがって、実際の使用においては、上記の定数をあまり長く定義することはできません。
最後に、このコンポーネントは、以前に画像のプリロードについて書いたコンポーネントと組み合わせて使用すると、より完璧な画像のプリロード効果を作成できます。
この記事の内容が皆様の実務のお役に立てれば幸いです。
以上がシンプルで実用的なプログレスバー読み込みコンポーネントloader.jsの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
