Heute werden wir einen fragmentierten Bildladeeffekt implementieren. Der Effekt ist wie folgt: Dies setzen wir in 3 Schritten um:
Definieren Sie die HTML-Struktur Alles was Sie hier brauchen ist ein Canvas-Element. <html> <Text> <Leinwand id="meineLeinwand" Breite="900" Höhe="600" Stil="Hintergrundfarbe: schwarz;" ></Leinwand> </body> </html> Bild teilen In diesem Beispiel teilen wir das Bild gemäß einem Raster aus 10 Zeilen und 10 Spalten in 100 kleine Fragmente auf, sodass jedes kleine Fragment unabhängig gerendert werden kann. let image = neues Bild(); image.src = "https://cdn.yinhengli.com/canvas-example.jpeg"; lass Boxbreite, Boxhöhe; // Aufteilen in 10 Zeilen und 10 Spalten let rows = 10, Spalten = 20, Zähler = 0; bild.onload = Funktion () { // Breite und Höhe jeder Zeile und Spalte berechnen boxWidth = image.width / columns; BoxHeight = Bildhöhe / Zeilen; // Schleifen-Rendering requestAnimationFrame(animate); }; requestAnimationFrame: Teilt dem Browser mit, dass Sie eine Animation durchführen möchten, und fordert den Browser auf, die angegebene Rückruffunktion aufzurufen, um die Animation vor dem nächsten Neuzeichnen zu aktualisieren. Schreiben von Animationsfunktionen Als nächstes schreiben wir eine Animationsfunktion, mit der der Browser vor jedem Neuzeichnen zufällig ein kleines Fragment rendert. Der Kern ist hier die Methode context.drawImage. let canvas = document.getElementById("myCanvas"); let Kontext = Canvas.getContext("2d"); Funktion animieren() { // Ein Modul zufällig rendern let x = Math.floor(Math.random() * columns); sei y = Math.floor(Math.random() * Zeilen); // Kernkontext.drawImage( Bild, x * boxWidth, // Die Startposition der horizontalen Koordinate auf der Leinwand y * boxHeight, // Die Startposition der vertikalen Koordinate auf der Leinwand boxWidth, // Die Breite der Zeichnung (die Breite des kleinen Fragmentbildes) boxHeight, // Die Höhe der Zeichnung (die Höhe des kleinen Fragmentbildes) x * boxWidth, // Beginnen Sie mit dem Zeichnen an der x-Koordinatenposition des großen Bildes. y * boxHeight, // Beginnen Sie mit dem Zeichnen an der y-Koordinatenposition des großen Bildes. boxWidth, // Beginnen Sie mit dem Zeichnen an der x-Position des großen Bildes (der Breite des kleinen Fragmentbildes). boxHeight // Ausgehend von der Y-Position des großen Bildes, wie hoch gezeichnet werden soll (die Höhe des kleinen Fragmentbildes) ); Zähler++; // Wenn das Modul zu 90 % gerendert ist, zeige das gesamte Bild. if (Zähler > Spalten * Zeilen * 0,9) { Kontext.drawImage(Bild, 0, 0); } anders { requestAnimationFrame(animieren); } } Vollständiger Code <html> <Text> <Leinwand id="meineLeinwand" Breite="900" Höhe="600" Stil="Hintergrundfarbe: schwarz;" ></Leinwand> <Skript> let image = neues Bild(); image.src = "https://cdn.yinhengli.com/canvas-example.jpeg"; let canvas = document.getElementById("myCanvas"); let Kontext = Canvas.getContext("2d"); lass Boxbreite, Boxhöhe; sei Zeilen = 10, Spalten = 20, Zähler = 0; bild.onload = Funktion () { BoxWidth = Bildbreite / Spalten; BoxHeight = Bildhöhe / Zeilen; requestAnimationFrame(animieren); }; Funktion animieren() { sei x = Math.floor(Math.random() * Spalten); sei y = Math.floor(Math.random() * Zeilen); Kontext.Bild zeichnen( Bild, x * boxWidth, // Startposition der horizontalen Koordinate y * boxHeight, // Startposition der vertikalen Koordinate boxWidth, // Breite des Bildes boxHeight, // Höhe des Bildes x * boxWidth, // Platziere die x-Koordinatenposition des Bildes auf der Leinwand y * boxHeight, // Platziere die y-Koordinatenposition des Bildes auf der Leinwand boxWidth, // Zu verwendende Breite des Bildes boxHeight // Zu verwendende Höhe des Bildes); Zähler++; if (Zähler > Spalten * Zeilen * 0,9) { Kontext.drawImage(Bild, 0, 0); } anders { requestAnimationFrame(animieren); } } </Skript> </body> </html> Zusammenfassen In dieser Demo verwenden wir CanvasAPI, um den Fragmentladeeffekt von Bildern zu erzielen. Ist das nicht ganz einfach? Dies ist das Ende dieses Artikels über die Implementierung der Bildfragmentierungsladefunktion basierend auf HTML-Code. Weitere relevante Inhalte zum Laden von HTML-Bildfragmenten finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! |
<<: Detaillierte Erklärung der .bash_profile-Datei im Linux-System
>>: Zeichnen Sie ein iPhone basierend auf CSS3
Lassen Sie mich zunächst erklären, warum der Text...
Tipps zum Senden von HTML-E-Mails: Verwenden Sie ...
Inhaltsverzeichnis Zunächst müssen Sie wissen, da...
Manchmal müssen wir steuern, ob HTML-Elemente auf ...
Seit ich den Mac zurückgegeben habe, liegt mein u...
Inhaltsverzeichnis Vorwort 1. Props, $emit Einweg...
In diesem Artikelbeispiel wird der spezifische Co...
Einführung in Selenium Grid Obwohl einige neue Fu...
Inhaltsverzeichnis Vorwort VMware-Klon virtueller...
In der Welt der Webentwicklung sind Frameworks wei...
1. Einleitung Beim Schreiben von Animationseffekt...
Elastic Stack, allgemein bekannt als ELK Stack, i...
Ich habe mich immer gefragt, warum der timestamp ...
Inhaltsverzeichnis 1. Konzept Speicherverwaltungs...
1. Unterschiede zwischen JSON.stringify() und JSO...