Hintergrund Ehe wir uns versehen, neigt sich ein arbeitsreiches Jahr dem Ende zu und es ist Zeit für das jährliche Event. Um die festliche Atmosphäre zu vermitteln, sind dynamische Effekte auf der Eventseite unerlässlich. Zunächst das Effektbild: 1. Gesamtanalyse Auf dem Bild können wir sehen, dass die wichtigsten dynamischen Effekte dynamische Anzeigepfeile und fallende Schneeeffekte sind. Es ist nicht ratsam, faul zu sein und dieses Effektbild direkt als Hintergrund zu verwenden, da die Größe des Bildes mehr als 3 MB beträgt, was eine Katastrophe für den Server und die Benutzererfahrung ist. Da es sich um eine aktive Seite handelt, ist die Anzahl der Besuche natürlich unvermeidlich. Unter der Bedingung hoher Parallelität ist der Server natürlich überlastet, und wir bedauern auch den Datenverkehr des Benutzers und die Zeit, die der Benutzer auf eine Antwort wartet. Als Person, die nach Perfektion strebt, besteht unser Grundsatz darin, GIF entschieden nicht für Effekte zu verwenden, die durch ein Programm erreicht werden können, und so viele Ressourcen wie möglich zu sparen. 2. Dynamische Anzeigepfeile Aus Sicht der Programmimplementierung müssen wir zunächst die Änderungspunkte kapseln und die Änderungen von den Konstanten trennen. Die fünf Ebenen in der Abbildung sind im Allgemeinen gleich. Jede Ebene hat eine Basis und einen Pfeil. Nachdem die Ebenen gekapselt sind, werden Daten verwendet, um die Position jeder Ebene zu steuern, und der Pfeil zeigt die Richtung an. Die relevanten Daten sind wie folgt: [ { Zustand: 0, links: 9, oben: -2, Richtung: { rotateZ: 290, Farbe: "#d26754" } }, { Zustand: 0, links: 66, oben: 10, Richtung: { rotateZ: 24, Farbe: "#f58351" } }, { Zustand: 0, links: 18, oben: 20, Richtung: { rotateZ: 30, Farbe: "#f78351" } }, { Zustand: 0, links: -2, oben: 36,5, Richtung: { rotateZ: 295, Farbe: "#e19d47" } }, { Zustand: 0, links: 52, oben: 49,5, Richtung: { rotateZ: 293, Farbe: "#e19d47" } } ] 1. Dynamische Effektanalyse Nach sorgfältiger Betrachtung der Renderings stellt man fest, dass der Gesamteffekt eine 3D-Perspektive ist. Die Perspektive ist kein vertikaler Blick nach unten, sondern ein Blick nach unten in einem 45°-Winkel. Das erste, was mir in den Sinn kommt, ist die leistungsstarke 3D-Rotation von CSS3. Der Pfeileffekt kann in Laufspur + Pfeillaufeffekt unterteilt werden. Auf diese Weise müssen Sie lediglich eine 3D-Perspektive der Spur erstellen und die Bewegung des Pfeils entlang der äußeren Spur wiederholen. 2. Konkrete Umsetzung <div Klasse="Artikel" flex="Haupt:Mitte Kreuz:Mitte" :Stil="{links:item.left+'%',top:item.top+'%'}" v-for="Artikel in Artikeln" @click="showReceive(Artikel)"> <div Klasse="unten" flex="main:center cross:center"> <div class="direction" flex="dir:top" :style="{transform:`rotateX(34deg) rotateY(0deg) rotateZ(${item.direction.rotateZ}deg)`}"> <div Klasse="halb"></div> <div Klasse="Halbkettenfahrzeug"> <div Klasse="Pfeil" :style="{transform: `drehen(${item.direction.rotate}deg`, rechts: `${item.direction.right}px`, 'Rahmenfarbe': `${item.direction.color} transparent transparent` }"></div> </div> </div> </div> </div> .Richtung { Position: absolut; Breite: 20px; Höhe: 260%; .halb { biegen: 1; } .Schiene { Position: relativ; //Rand oben: 90px; Rand oben: 2em; .Pfeil { Position: absolut; Breite: 0; Höhe: 0; Rand: 10px durchgezogen; Rahmenfarbe: rot transparent transparent; Animation: dynamicArrow 3000 ms unendlich linear; } } } /* //Dynamischer Pfeil*/ @keyframes dynamischer Pfeil { 0% { Deckkraft: 1; unten: 100 %; } 70 % { Deckkraft: 1; } 90 % { Deckkraft: 0,1; unten: -20px; } 100 % { Deckkraft: 0; } } 3. Schnee fällt überall am Himmel Wenn Sie das Effektbild genau betrachten, werden Sie feststellen, dass die Schneeflocken groß und klein sind, sich mit unterschiedlicher Geschwindigkeit bewegen, nah und fern sind und helle und dunkle Farben haben. Die Gesamtbewegungsrichtung der Schneeflocken ist von oben nach unten und von links nach rechts, und sie fallen sehr gleichmäßig. 1. Umsetzungsideen Flatterspur mit Schneeflocken + Flattereffekt mit Schneeflocken. Neigen Sie die Spur in einem bestimmten Winkel und kacheln Sie dann den gesamten Bildschirm. Verwenden Sie Daten, um Position, Ebene und Größe der Schneeflocken in der Spur, Laufverzögerung, Laufgeschwindigkeit und Farbtiefe jeder Spur zu steuern. Um den Effekt intuitiver zu sehen, stellen Sie die Hintergrundfarbe der Spur wie unten gezeigt ein: 2. Konkrete Umsetzung <div Klasse="Schnee"> <div class="s_track" :style="{transform:`rotate(45deg) translate(${snow.deviation}px,${-snow.deviation}px)`,'z-index':snow.zindex}" v-for="Schnee in Schnee"> <img class="snow" src="/static/original/img/DoubleDenierActivies/cbp_snow.png" :style="{opacity:snow.opacity,animation: `dynamicSnow ${snow.speed}ms ${snow.delay}ms unendlich linear`,width:snow.size*1.14+'px',height:snow.size+'px'}"/> </div> </div> .s_track { Position: absolut; Breite: 220%; // Höhe: 10px; oben: -10px; Transform-Ursprung: 0 0 0; .Schnee { Sichtbarkeit: versteckt; Position: absolut; Z-Index: 2; Animation: dynamischer Schnee, 2000 ms, unendlich linear; } } /* //Schneeflocke*/ @keyframes dynamicSnow { 0% { Sichtbarkeit: sichtbar; oben: 0; links: 0; transformieren: drehen(0); } 100 % { Sichtbarkeit: sichtbar; oben: 100 %; links: 100 %; transformieren: drehen (360 Grad); } } lass schneit = [], Gibt den Wert für die Anzahl der Zeichen an, die in der ersten Zeile des Blocks stehen. für (lass i = 0; i < initCount; i++) { sei Einheit = i - 8, Geschwindigkeit = i > 3 ? i % 3 : i, Größe = 0; Geschwindigkeit++; wenn (i % 5 == 0) { Größe = 10; } sonst wenn (i % 8 == 0) { Größe = 20; } anders { Größe = Math.random() * 10; } schneit.push({ Abweichung: Einheit * 40, //Positionsverzögerung: Math.random() * 1000, //Verzögerungsgeschwindigkeit: Geschwindigkeit * 3000, //Geschwindigkeitsopazität: Geschwindigkeit / 4, Größe: Größe, zindex: Größe >= 10 ? 4 : 0 }); } lass snows2 = []; snows.forEach(f => { snows2.push({ ...F, Abweichung: schneit[parseInt(Math.random() * initCount)].Abweichung - 10, Verzögerung: f.delay + 1000 //Verzögerung }); }); lass snows3 = []; snows.forEach(f => { snows3.push({ ...F, Abweichung: schneit[parseInt(Math.random() * initCount)].Abweichung - 20, Verzögerung: f.delay + 2000 //Verzögerung }); }); schneit = schneit.concat(schneit2); schneit = schneit.concat(schneit3); snows.sort((a, b) => a.Abweichung - b.Abweichung); this.snows = schneit; IV. Fazit Als Frontend-Entwickler müssen Sie die Renderings so weit wie möglich wiederherstellen. Während Sie den Wiederherstellungsgrad verfolgen, müssen Sie auch Leistung und Benutzererfahrung berücksichtigen, um die Seite sowohl schön als auch so leicht und prägnant wie möglich zu gestalten. Oben ist die vom Editor eingeführte Anwendung von CSS3-Animationseffekten auf Aktivitätsseiten. Ich hoffe, es wird allen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! |
<<: Detaillierte Analyse dieser Richtung in JavaScript und wie die Richtung geändert werden kann
In diesem Artikel wird der spezifische Code von V...
1. Laden Sie das Tomcat-Image herunter Docker zie...
Die Verwendung der vue3 Teleport-Sofortbewegungsf...
veranschaulichen Dieser Artikel wurde am 20.05.20...
Nach dem Drücken der Eingabetaste auf der Webseite...
1. Schauen wir uns zunächst eine Anweisung zur Ta...
1 Einleitung Wenn wir SQL-Anweisungen schreiben, ...
Lassen Sie uns nun mehrere Situationen zur Steuer...
Vorwort Im vorherigen Artikel haben wir hauptsäch...
Wie in der folgenden Abbildung dargestellt: Wenn ...
Syntaxformat: row_number() über (Partition durch ...
In requireJS gibt es eine Eigenschaft namens base...
Inhaltsverzeichnis 1. MySQL aus einer Makroperspe...
Vorwort Bei der Projektfreigabe ist immer eine Ve...
Effektbild: html: <div class='site_bar'...