Vorwort Solche Spezialeffekte sollte man oft sehen. Das ist doch ziemlich cool, oder? Dies ist der häufigste Spezialeffekt in Google Gibt es also eine Möglichkeit, diesen Effekt mit Ideen Tatsächlich handelt es sich um eine Animation, bei der ein perfekter Kreis von klein nach groß wächst. Dies lässt sich mithilfe der Animation in Beispielcode @keyframes welligkeit{ aus { transformieren: Skalierung(0); Deckkraft: 1; } Zu { transformieren: Skalierung(1); Deckkraft: 0; } } Die Implementierung mit Beispielcode var btn = document.getElementById('btn'); btn.addeventlistener('klicken',Funktion(){ Klasse hinzufügen(btn,'animieren') },FALSCH) btn.addeventlistener('transitionend',function(){//Auf das Ende der CSS3-Animation warten removeClass(btn,'animate') },FALSCH) Wie kann man also die Animation über CSS auslösen? CSS-Implementierung Die Pseudoklassen, die in
In vielen Fällen werden die Effekte auf unseren Seiten durch Lass es uns zuerst versuchen. Struktur Dies ist die Seitenstruktur und der Stil, den wir geschrieben haben <Stil> .btn{ Anzeige: Block; Breite: 300px; Umriss: 0; Überlauf: versteckt; Position: relativ; Übergang: .3s; Cursor: Zeiger; Benutzerauswahl: keine; Höhe: 100px; Textausrichtung: zentriert; Zeilenhöhe: 100px; Schriftgröße: 50px; Hintergrund: Tomate; Farbe: #fff; Rahmenradius: 10px; } </Stil> <a class="btn">Schaltfläche</a> Sehr einfach, nur ein gewöhnlicher Knopfstil Als nächstes fügen wir der Schaltfläche den perfekten Kreis hinzu, den wir benötigen. Wir verwenden Pseudoelemente, um dies zu erreichen .btn:nach{ Inhalt: ''; Position: absolut; Breite: 100 %; Polsterung oben: 100 %; Hintergrund: transparent; Randradius: 50 %; links: 50%; oben: 50 %; transformieren: übersetzen(-50 %,-50 %) } Entfernen wir Dann schreiben wir eine Skalierungsanimation @keyframes welligkeit{ aus { transformieren: übersetzen (-50 %, -50 %), skalieren (0); /**Da wir das Transformationsattribut standardmäßig geschrieben haben, müssen wir hier „translate(-50%,-50%)“ hinzufügen, sonst wird es ersetzt**/ Hintergrund: rgba(0,0,0,.25); } Zu { transformieren: übersetzen(-50 %,-50 %) Skalierung(1); Hintergrund: transparent; } } Kleines interaktives Hover-Erlebnis Versuchen Sie, mit der Maus darüber zu fahren? .btn:hover:nach{ Animation: Welligkeit 1 s; } Der Effekt ist gut, allerdings wird bei zu schneller Mausbewegung der gerade vergrößerte Kreis sofort wieder verkleinert, was etwas inkonsistent ist. Dies ist jedoch nicht der gewünschte Effekt. Wir hoffen, dass es einmal pro Klick ausgelöst wird, anstatt es einfach dort zu platzieren und nie wieder auszulösen. aktiv versuchen In der täglichen Arbeit wird .btn:aktiv:nach{ Animation: Welligkeit 1 s; } Der Effekt ist auch unbefriedigend, ein bisschen wie beim Gedrückthalten der Maus, man muss die Maus gedrückt halten, um ihn vollständig auszulösen. Im obigen Beispiel läuft die Animation beispielsweise Fokus Erfahrung Wenn Sie einem Element den Fokus geben müssen, können Sie ihm ein <a class="btn" tabindex="1">Schaltfläche</a> .btn:Fokus:nach{ Animation: Welligkeit 1 s; } Gibt es keine Lösung? Natürlich gibt es welche, das letzte ist definitiv die Lösung, hahaha geprüft <label Klasse="btn"> <input type="checkbox"><span>Schaltfläche</span> </Bezeichnung> Wir haben hier Verleihen Sie etwas Stil .btn>span:nach{ /**Ändern Sie den Selektor**/ } .btn>Eingabe[Typ=Kontrollkästchen]{ Anzeige: keine } .btn>Eingabe[Typ=Kontrollkästchen]:aktiviert+span:nach{ Animation: Welligkeit 1 s; } Dies kann auch die Animation auslösen, das Problem besteht jedoch darin, dass die Auswahl aufgehoben wird, wenn Sie erneut klicken. Wie kann ich die Animation auslösen? Tatsächlich kann dies erreicht werden mit .btn>Eingabe[Typ=Kontrollkästchen]:nicht(:aktiviert)+span:nach{ Animation: Welligkeit 1 s; } Auf den ersten Blick scheint dies recht clever zu sein, aber wenn man genauer darüber nachdenkt, hat dies, da die Animation sowohl auf der Vorder- als auch auf der Rückseite geschrieben ist, nichts mit .btn>Eingabe[Typ=Kontrollkästchen]+span:nach{ Animation: Welligkeit 1 s; } Unendlicher Kreislauf... Dieses Problem hat mich lange Zeit geplagt, aber Gott wird diejenigen, die hart arbeiten, nicht im Stich lassen. Später habe ich versucht, verschiedene Animationen in zwei Zuständen auszulösen, und sie können wie folgt separat ausgelöst werden .btn>Eingabe[Typ=Kontrollkästchen]:aktiviert+span:nach{ Animation: Welle1 1 s; } .btn>Eingabe[Typ=Kontrollkästchen]:nicht(:aktiviert)+span:nach{ Animation: Welligkeit2 1s; } Dies sollte leicht zu verstehen sein. Jetzt kommt der Punkt. Wenn wir jetzt den Animationsprozess in Das ist ganz einfach. Wir müssen nur einen Standardzustand festlegen, einen Zustand auswählen und dann Animationen mit unterschiedlichen Namen auslösen. .btn>Eingabe[Typ=Kontrollkästchen]+span:nach{ Animation: Ripple-in 1 s; } .btn>Eingabe[Typ=Kontrollkästchen]:aktiviert+span:nach{ Animation: Wellenform 1 s; } @keyframes ripple-in{ aus { transformieren: übersetzen (-50 %, -50 %), skalieren (0); Hintergrund: rgba(0,0,0,.25); } Zu { transformieren: übersetzen(-50 %,-50 %) Skalierung(1); Hintergrund: transparent; } } @keyframes ripple-out{/*nur der Name ist anders*/ aus { transformieren: übersetzen (-50 %, -50 %), skalieren (0); Hintergrund: rgba(0,0,0,.25); } Zu { transformieren: übersetzen(-50 %,-50 %) Skalierung(1); Hintergrund: transparent; } } Der Effekt ist wie am Anfang des Artikels gezeigt, perfekt Die komplette Demo ist wie folgt https://codepen.io/xboxyan/pen/Jmvyex/ Einige Mängel Da der obige Animationsstil standardmäßig ausgelöst wird, sehen Sie die Wassertropfenanimation auf der Schaltfläche einmal, wenn die Seite geladen wird. Dies ist jedoch nicht besonders auffällig und akzeptabel. Zweitens besteht der eigentliche Effekt definitiv darin, sich vom Punkt aus auszubreiten, an dem die Maus geklickt wird. Unser CSS kann dies sicherlich nicht und kann sich nur vom Zentrum aus ausbreiten, was ebenfalls ein Kompromiss ist. Hier ist eine Idee. Sie können Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. |
<<: So konfigurieren Sie den Nginx-Lastausgleich
>>: Vue realisiert die Funktion eines Bucheinkaufswagens
1. Offizielle OpenSSL-Website Offizielle Download...
1. Fügen Sie die folgenden Abhängigkeiten in pom....
Dieser Artikel beschreibt eine native JS-Implemen...
CSS-Operationen CSS $("").css(name|pro|...
Inhaltsverzeichnis 1. Problem 2. Lösung 2.1 Pagin...
Derzeit verfügt Nginx über einen Reverse-Proxy fü...
In diesem Artikel wird hauptsächlich die Methode ...
Inhaltsverzeichnis Hintergrund Welche Methoden gi...
Nachdem der Server, auf dem sich Docker befindet,...
Wenn Sie MySQL zum ersten Mal lernen, verstehen S...
Inhaltsverzeichnis Einführung in FRM-Dateien und ...
Alibaba Cloud kauft Server Kaufen Sie einen Cloud...
1. Hoher Einsturzgrad Im Dokumentfluss wird die H...
1. HTML-Übersicht 1.HTML: Hypertext Markup Langua...
Hintergrund des Unfalls: Vor einigen Tagen habe i...