スムーズなユーザー エクスペリエンスを作成することは、特にサイトが大規模なビジュアルに依存している場合、Web 開発における重要な優先事項です。新しい光沢のあるクロンダイク ソリティア ゲームに取り組んでいる間、カード画像が自然にロードされ、ユーザーが空白の画面を見つめたままにならないようにする必要がありました。そこで、バニラの JavaScript、HTML、CSS のみを使用して、画像がどのくらい読み込まれたかをユーザーに表示できる、シンプルな画像プリローダーを追加することにしました。私がやった方法は次のとおりです。
まず最初に、物事を整理整頓するために単純なファイル構造を作成しました。それは次のようになります:
klondike-preloader/ ├── index.html ├── styles.css └── script.js
このようにして、HTML 構造、スタイル、JavaScript ロジックに個別のファイルを用意しました。
HTML ファイルで、画像の読み込みプロセスを開始するボタン、読み込みの進行状況を示す進行状況バー、準備ができたら画像を表示するスポットを設定しました。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Klondike Solitaire Image Preloader</title> <link rel="stylesheet" href="styles.css"> </head> <body> <button id="load-button">Load Solitaire Image</button> <div id="progress-bar"> <div id="progress"></div> </div> <div id="image-container"> <img id="image" alt="Klondike Solitaire Card" /> </div> <script src="script.js"></script> </body> </html>
構造が整ったので、スタイリングに移ります。実際に画像の読み込みが始まるまで、進行状況バーを非表示にしたかったのです。
#progress-bar { width: 100%; background: lightgray; margin-bottom: 10px; height: 20px; display: none; /* Hidden at first */ } #progress { width: 0%; height: 100%; background: green; } #image-container { display: none; /* Also hidden initially */ } #load-button { margin-bottom: 10px; padding: 10px 20px; font-size: 16px; cursor: pointer; }
次は JavaScript です。私がやったことは次のとおりです:
const progressBar = document.getElementById('progress'); const imageContainer = document.getElementById('image-container'); const imageElement = document.getElementById('image'); const loadButton = document.getElementById('load-button'); // Default fallback size in bytes const DEFAULT_SIZE_BYTES = 500 * 1024; // 500 KB function loadImage(url) { const xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.responseType = 'blob'; let totalSize = DEFAULT_SIZE_BYTES; document.getElementById('progress-bar').style.display = 'block'; xhr.onprogress = (event) => { if (event.lengthComputable) { totalSize = event.total; } const percentComplete = (event.loaded / totalSize) * 100; progressBar.style.width = percentComplete + '%'; }; xhr.onload = () => { if (xhr.status === 200) { const blob = xhr.response; const objectUrl = URL.createObjectURL(blob); imageElement.src = objectUrl; imageContainer.style.display = 'block'; progressBar.parentNode.style.display = 'none'; } }; xhr.onerror = () => { console.error('Image loading failed.'); }; xhr.send(); } loadButton.addEventListener('click', () => { loadImage('https://example.com/your-image.jpg'); });
コーディング後、さまざまな画像サイズでテストし、デフォルトのサイズを調整して、現実的な読み込みエクスペリエンスが提供されることを確認しました。 codepen でコードを試すことができます: https://codepen.io/quantotius/pen/KKOXxqP
これで完成です!バニラ JavaScript を使用して画像をプリロードし、ユーザー エクスペリエンスを向上させる、基本的かつ効果的な方法です。視覚的なフィードバックが必須となるクロンダイク ソリティアのようなゲームに最適です。試してみて、行き詰まったら、遠慮なく助けを求めてください!
以上がクロンダイク ソリティア ゲームの構築: バニラ JavaScript を使用したシンプルなイメージ プリローダーの追加の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。