Anwendung von CSS3-Animationseffekten in Aktivitätsseiten

Anwendung von CSS3-Animationseffekten in Aktivitätsseiten

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!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

<<:  Detaillierte Analyse dieser Richtung in JavaScript und wie die Richtung geändert werden kann

>>:  Implementierung von Zehntausenden gleichzeitigen Verbindungen auf einer einzigen Maschine mit nginx+lua

Artikel empfehlen

Vue+echarts realisiert gestapelte Balkendiagramme

In diesem Artikel wird der spezifische Code von V...

Docker-Installation Tomcat Dubbo-Admin-Instanz-Kenntnisse

1. Laden Sie das Tomcat-Image herunter Docker zie...

Detaillierte Erklärung zur Verwendung der vue3 Teleport-Sofortbewegungsfunktion

Die Verwendung der vue3 Teleport-Sofortbewegungsf...

CentOS7 verwendet RPM-Paket zur Installation von MySQL 5.7.18

veranschaulichen Dieser Artikel wurde am 20.05.20...

mysql charset=utf8 verstehen Sie wirklich, was es bedeutet

1. Schauen wir uns zunächst eine Anweisung zur Ta...

Der Unterschied und die Verwendung von distinct und row_number() over() in SQL

1 Einleitung Wenn wir SQL-Anweisungen schreiben, ...

Die Verwendung von Ankerpunkten in HTML_PowerNode Java Academy

Lassen Sie uns nun mehrere Situationen zur Steuer...

Bootstrap 3.0 Studiennotizen Grid-System-Fall

Vorwort Im vorherigen Artikel haben wir hauptsäch...

Detaillierte Erläuterung des Docker-Arbeitsmodus und -Prinzips

Wie in der folgenden Abbildung dargestellt: Wenn ...

Fallstudie zu den SQL ROW_NUMBER()- und OVER()-Methoden

Syntaxformat: row_number() über (Partition durch ...

Detaillierte Erklärung zur Verwendung des Basis-Tags in HTML

In requireJS gibt es eine Eigenschaft namens base...

So wird eine Select-Anweisung in MySQL ausgeführt

Inhaltsverzeichnis 1. MySQL aus einer Makroperspe...

Eine kurze Analyse der Konfigurationselemente des Angular CLI-Releasepfads

Vorwort Bei der Projektfreigabe ist immer eine Ve...