JavaScript の非常に集中的な期間中に、かなり重い 3D 配列が構築されて埋められるローディング バーを作成しようとしています。この読み込みバーは、ユーザーがボタンをクリックするまで空のままにしておく必要があります。
使用しているかどうかに関係なく、フリーズが発生します-webkit-transition
(このアプリはクロム専用である可能性があり、私の場合、クロスブラウザーは必要ありません)。
シンプルさを求めて、このようにバーを構築しました...
<div id="loader">
<div id="thumb">
</div>
</div>
...そして、メインfor
ループのさまざまな段階でそのバーをインクリメントしようとしました:
for(i = 0; i < 5 ; i++){
document.getElementById('thumb').style.width = i*25 + '%';
//More Code
}
問題は、JavaScript が終了するまですべてがフリーズすることです。Stack Overflow で同様の質問を見つけ、JavaScript の計算中に CSS アニメーションを使用し、コメントで次のことを見つけて検討および/または試しました。
ウェブワーカー
私のスクリプトは、このサイトによると機能しない関数を含むオブジェクトとコンストラクターで配列を埋めているため、機能するとは思わないでください
jQuery
オプションではありません。アプリで外部ライブラリを使用できません。いずれにせよ、読み込みバーのためだけにライブラリ全体をインポートするのはやり過ぎのようです...
キーフレーム
これは有望で試してみましたが、最終的にはフリーズするので、喜びはありません
timeOut()
sと思ったのですが、ローディングバーの目的はフラストレーションを軽減することなので、待ち時間を増やすのは逆効果に思えます
スムーズでなくても、この段階でバーを少しでも増やしていただければ幸いです。これは私だけではない問題であると確信しています。誰かが興味深い解決策を持っているのではないでしょうか?
PS: 参照されている質問に追加するのではなく、新しい質問として投稿しています。これは、特に JavaScript (jQuery ではなく) のヘルプを求めており、幅のトランジション (!=アニメーション) を使用して取得できる場合を希望するためです。 .