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

js Canvas realisiert Slider-Verifizierung

In diesem Artikelbeispiel wird der spezifische Co...

Allgemeine Symbole in Unicode

Unicode ist ein von einer internationalen Organis...

So implementieren Sie einen Animationsübergangseffekt im Frontend

Inhaltsverzeichnis Einführung Traditionelle Überg...

Grafisches Tutorial zur MySQL 5.7-Konfiguration ohne Installation

Mysql ist eine beliebte und einfach zu bedienende...

PNG-Alpha-Transparenz in IE6 (vollständige Sammlung)

Viele Leute sagen, dass IE6 PNG-Transparenz nicht...

Verständnis und Anwendung des Destrukturierungsoperators von JavaScript ES6

Inhaltsverzeichnis Vorwort Die Rolle von Dekonstr...

CSS3 realisiert die Animation des Shuttle-Sternenhimmels

Ergebnis: html <canvas id="Sternenfeld&qu...

Detaillierte Analyse des virtuellen Nginx-Hosts

Inhaltsverzeichnis 1. Virtueller Host 1.1 Virtuel...

Detaillierte Erklärung der Listendarstellung von Vue

Inhaltsverzeichnis 1. v-for: Array-Inhalte durchl...

Rsync+crontab regelmäßige Synchronisierungssicherung unter centos7

In letzter Zeit möchte ich regelmäßig wichtige in...

Beispielcode zum Setzen von Hotlinks und Koordinatenwerten für Webbilder

Manchmal müssen Sie mehrere Bereiche auf einem Bi...