Die Schaffung eines reibungslosen Benutzererlebnisses hat bei der Webentwicklung oberste Priorität, insbesondere wenn Ihre Website auf große visuelle Elemente angewiesen ist. Während ich an meinem neuen glänzenden Klondike Solitaire-Spiel arbeitete, musste ich sicherstellen, dass die Kartenbilder auf eine natürliche Weise geladen wurden und die Benutzer nicht auf einen leeren Bildschirm starrten. Deshalb habe ich beschlossen, einen einfachen Bild-Preloader hinzuzufügen, der den Benutzern auch anzeigen kann, wie viel des Bildes geladen wurde, und dazu ausschließlich Vanilla-JavaScript, HTML und CSS verwendet. So habe ich es gemacht.
Das Wichtigste zuerst: Ich habe eine einfache Dateistruktur erstellt, um für Ordnung zu sorgen. So sah es aus:
klondike-preloader/ ├── index.html ├── styles.css └── script.js
Auf diese Weise hatte ich separate Dateien für die HTML-Struktur, das Styling und die JavaScript-Logik.
In der HTML-Datei habe ich eine Schaltfläche zum Starten des Bildladevorgangs, einen Fortschrittsbalken, der anzeigt, wie weit der Ladevorgang fortgeschritten ist, und eine Stelle eingerichtet, an der das Bild angezeigt wird, sobald es fertig ist.
<!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>
Nachdem die Struktur vorhanden war, ging ich zum Styling über. Ich wollte, dass der Fortschrittsbalken ausgeblendet bleibt, bis das Bild tatsächlich geladen wird.
#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; }
Jetzt zum JavaScript! Folgendes habe ich getan:
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'); });
Nach dem Codieren habe ich es mit verschiedenen Bildgrößen getestet und die Standardgröße angepasst, um sicherzustellen, dass es ein realistisches Ladeerlebnis bietet. Sie können den Code auf Codepen ausprobieren: https://codepen.io/quantotius/pen/KKOXxqP
Und da haben Sie es! Eine einfache, aber effektive Möglichkeit, Bilder vorab zu laden und das Benutzererlebnis mit Vanilla-JavaScript zu verbessern. Perfekt für ein Spiel wie Klondike Solitaire, bei dem visuelles Feedback ein Muss ist. Probieren Sie es aus und wenn Sie nicht weiterkommen, fragen Sie einfach um Hilfe!
Das obige ist der detaillierte Inhalt vonErstellen eines Klondike Solitaire-Spiels: Hinzufügen eines einfachen Bild-Preloaders mit Vanilla-JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!