Heim > Web-Frontend > CSS-Tutorial > Hauptteil

So verwenden Sie CSS und D3, um interaktive Animationen zum Schwimmen kleiner Fische zu implementieren (mit Code)

不言
Freigeben: 2018-08-29 13:47:25
Original
3041 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der Verwendung von CSS und D3 zur Realisierung interaktiver Animationen zum Schwimmen kleiner Fische. Ich hoffe, dass dies für Freunde in Not hilfreich ist Dir helfen.

Effektvorschau

So verwenden Sie CSS und D3, um interaktive Animationen zum Schwimmen kleiner Fische zu implementieren (mit Code)

Quellcode-Download

https://github.com/comehope/front- end-daily-challenges

Code-Interpretation

Dom definieren, die im Container enthaltenen Unterelemente repräsentieren jeweils den Körper, die Augen, die Rückenflosse und den Schwanz des Fisches:

<div>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
</div>
Nach dem Login kopieren

Legen Sie den Seitenstil fest. Für Vollbild ohne Bildlaufleisten:

body {
    margin: 0;
    width: 100vw;
    height: 100vh;
    background-color: #222;
    overflow: hidden;
}
Nach dem Login kopieren

Definieren Sie die Behältergröße des Fisches. --r ist eine grundlegende Größeneinheit, und alle nachfolgenden Größen werden darauf basierend berechnet:

.fish {
    position: absolute;
    --r: 15vw;
    width: calc(var(--r) + var(--r) / 3);
    height: calc(var(--r) * 2);
    left: 50%;
    top: 100px;
}
Nach dem Login kopieren

Zeichnen Sie den Fischkörper und geben Sie der übergeordneten Klasse die Farbe des Fisches an, da diese Farbe unten verwendet wird:

.fish {
    color: hsl(0, 50%, 50%);
}

.fish .body {
    position: absolute;
    border: var(--r) solid transparent;
    border-right-color: currentColor;
    border-left-style: none;
}
Nach dem Login kopieren

Zeichnen Sie die Augen des Fisches:

.fish .eye {
    position: absolute;
    --r1: calc(var(--r) / 4);
    width: var(--r1);
    height: var(--r1);
    background-color: #111;
    border-radius: 50%;
    top: 35%;
    left: 30%;
}
Nach dem Login kopieren

Zeichnen Sie die Rückenflosse des Fisches:

.fish .fin {
    position: absolute;
    --r2: calc(var(--r) / 2);
    border-bottom: var(--r2) solid;
    border-left: var(--r2) solid transparent;
    filter: brightness(2.5);
    left: calc(var(--r) - var(--r2));
}
Nach dem Login kopieren

Zeichnen Sie den Schwanz des Fisches:

.fish .tail {
    position: absolute;
    --r3: calc(var(--r) / 3);
    border: var(--r3) solid transparent;
    border-right-color: currentColor;
    border-left-style: none;
    right: 0;
    top: calc(var(--r) - var(--r3));
}
Nach dem Login kopieren

Fügen Sie den Animationseffekt hinzu, um den Fisch schwimmen zu lassen. Dies wird nicht in einer Schleife ausgeführt, sondern nur einmal :

.fish {
    right: calc(var(--r) * -1);
    animation: run 3s linear forwards;
}

@keyframes run {
    to {
        right: 100%;
    }
}
Nach dem Login kopieren

Fügen Sie den Animationseffekt hinzu, wenn der Fisch schwimmt. Schwingender Animationseffekt:

.fish {
    animation: 
        run 3s linear forwards,
        shake 0.3s linear infinite;
}

@keyframes shake {
    50% {
        transform: rotateY(-30deg);
    }

    100% {
        transform: rotateY(30deg);
    }
}
Nach dem Login kopieren

Als nächstes legen Sie einige Variablen fest, um anders aussehende Fische zu erstellen:

Fischgrößenvariable--size, je größer der Wert, desto größer die Größe:

.fish {
    --size: 5;
    --r: calc(var(--size) * 1vw);
}
Nach dem Login kopieren

Die Farbvariable des Fisches--color, die den Winkel des Farbtonkreises angibt:

.fish {
    --color: 0;
    color: hsl(var(--color), 50%, 50%);
}
Nach dem Login kopieren

Die Zeitdauer des Fisches schwimmt von rechts nach links. Je kürzer die Zeit, desto schneller schwimmt er:

.fish {
    --duration: 3;
    animation: 
        run calc(var(--duration) * 1s) linear forwards,
        shake 0.3s linear infinite;
}
Nach dem Login kopieren

Je größer die Daten, desto näher befindet er sich am unteren Teil der Seite:

.fish {
    --top: 100;
    top: calc(var(--top) * 1px);
}
Nach dem Login kopieren

Als nächstes verwenden Sie d3, um Dom-Elemente und CSS-Variablen stapelweise zu verarbeiten.
Stellen Sie die d3-Bibliothek vor:

<script></script>
Nach dem Login kopieren

Löschen Sie das .fish-Element im HTML und den Variablendeklarationscode in der CSS-Datei. Erstellen Sie eine Funktion, die einen Fisch generiert. Die Werte von CSS-Variablen werden zufällig generiert. Der Wertebereich von --size beträgt 5 bis 8, der Wertebereich von --color beträgt -60 bis 15, der Wertebereich von --duration beträgt 3 bis 6 Wertebereich von --top Der Wertebereich liegt zwischen 100 und 300:

function buildFish() {
    let fish = d3.select('body')
        .append('p')
        .attr('class', 'fish')
        .style('--size', d3.randomUniform(5, 8)())
        .style('--color', d3.randomUniform(-60, 15)())
        .style('--duration', d3.randomUniform(3, 6)())
        .style('--top', d3.randomUniform(100, 300)());
    
    fish.append('span').attr('class', 'body');
    fish.append('span').attr('class', 'eye');
    fish.append('span').attr('class', 'fin');
    fish.append('span').attr('class', 'tail');
}
Nach dem Login kopieren

bindet das Mausklickereignis. Wenn die Maus gedrückt wird, wird ein Fisch generiert:

function buildFish(e) {
    //略....
    .style('--top', e.clientY);
}

window.addEventListener('click', buildFish);
Nach dem Login kopieren

und das Maul des Fisch und die Klickposition liegen auf einer horizontalen Linie:

.fish {
    top: calc(var(--top) * 1px - var(--r));
}
Nach dem Login kopieren

Schließlich werden beim Laden der Seite automatisch 3 Fische generiert, um zu vermeiden, dass die Seite nach dem Laden leer ist:

function buildFish(e) {
    //略....
    .style('--top', e ? e.clientY : d3.randomUniform(100, 300)());
}

d3.range(3).forEach(buildFish);
Nach dem Login kopieren

Du bist fertig!

Verwandte Empfehlungen:

So verwenden Sie reines CSS, um den Texteffekt des Zerreißens von Alufolie zu erzielen (mit Code)

Verwendung reines CSS, um den Animationseffekt einer Sanduhr zu erreichen

Das obige ist der detaillierte Inhalt vonSo verwenden Sie CSS und D3, um interaktive Animationen zum Schwimmen kleiner Fische zu implementieren (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!