Verwenden Sie die Webanimationen -API, um nativ zu sein<details></details>
Animationseffekte von Elementen
Eine der häufigsten Anforderungen an die Animation auf einer Website ist die Erweiterung und Abschlusswirkung im Akkordeonstil. Interessanterweise existierte die slideDown()
-Funktion von Jquery bereits in der ersten Version im Jahr 2006.
In diesem Artikel wird erklärt<details></details>
Animierte Elemente.
HTML -Struktur
Schauen wir uns zunächst die HTML -Tag -Struktur an, die zur Implementierung dieser Animation erforderlich ist.
Um die Wiederverwendbarkeit des Codes zu verbessern, sollten wir eine Akkordeonklasse erstellen. Auf diese Weise können wir jeden verwenden Der Konstruktor wird verwendet, um die für jedes Akkordeon erforderlichen Daten zu speichern. In der Funktion Diese Die Funktion Die Funktion Diese Funktion wird aufgerufen, wenn die Animation zusammengebrochen oder erweitert wird. Wie Sie sehen können, ist ein Parameter Wir haben den größten Teil des Codes gemacht! Alles, was übrig bleibt, ist für jedes der HTML Um die enge Höhe und die offene Höhe zu berechnen, müssen wir sicherstellen Versuchen Sie zum Beispiel nicht Auch nicht Das war's, wir haben eine wunderschöne Akkordeon -Animation mit JavaScript ohne Bibliotheken erstellt! Bitte beachten Sie, dass der Bildpfad <details></details>
Ein Element erfordert eines<summary></summary>
Element.<summary></summary>
Es ist etwas sichtbar, wenn das Akkordeon gefaltet ist.<details></details>
Alle anderen Elemente innerhalb sind Teil des Inhalts im Akkordeon. Um die Implementierung von Animationseffekten zu erleichtern, wickeln wir sie in einen ein<details>
<summary>Akkordeontitel</summary>
<div class="content">
<p>
Lorem Ipsum Dolor Sit Amet, Konsistende apisicing elit. Modi Une, Ex Coluptates Autem Aliquid Veniam Quis temporibus Repudiandae Illo, Nostrum, Pariatur Quae! Bei Animi Modi Dignissimos Corrupi platziert vuptatum!
</p>
</div>
</details>
Akkordeonklasse
<details></details>
Rufen Sie new Accordion()
auf dem Element an. Klassenakkordeon {
Konstruktor (el) {}
Onclick (e) {}
Shrink () {}
offen() {}
expandieren() {}
onanimationfinish (geöffnet) {}
}
constructor()
Konstruktor (el) {
this.el = el;
this.summary = el.querySelector ('Zusammenfassung');
this.content = el.querySelector ('. Inhalt');
this.Animation = null;
this.isclosing = false;
this.isexpanding = false;
this.summary.adDeVentListener ('klick', (e) => this.onclick (e));
}
onClick()
onClick()
überprüfen wir, ob das Element animiert ist (schließen oder ausdehnen). Wenn der Benutzer auf das Akkordeon klickt, während das Element animiert ist, müssen wir diese Überprüfung durchführen. Wenn die Klickgeschwindigkeit zu schnell ist, möchten wir nicht, dass das Akkordeon von vollständig erweitert auf vollständig geschlossen wird.<details></details>
Wenn ein Element geöffnet wird, fügt der Browser eine open
Eigenschaft hinzu. Wir können den Wert dieser Eigenschaft durch this.el.open
erhalten.EL.Open. Onclick (e) {
E.PreventDefault ();
this.el.style.overflow = 'versteckt';
if (this.isclosing ||! this.el.open) {
this.open ();
} else if (this.isexpanding || this.el.open) {
this.shrink ();
}
}
shrink()
shrink()
-Funktion verwendet die .animate()
-Funktion von WAAPI. Sie können die MDN -Dokumentation für weitere Informationen lesen. WAAPI ist CSS @keyframes
sehr ähnlich. Wir müssen die Start- und Keyframes der Animation definieren. In diesem Beispiel benötigen wir nur zwei Keyframes, die erste ist die aktuelle Höhe des Elements und die zweite ist die Höhe nach dem Abschluss des Akkordeons. Die aktuelle Höhe wird in der startHeight
-Variable gespeichert. Eine enge Höhe wird in der endHeight
-Variable gespeichert, die entspricht<summary></summary>
Höhe. Shrink () {
this.isclosing = true;
const startheight = `$ {this.el.offseteight} px`;
const endHeight = `$ {this.summary.offseteight} px`;
if (this.Animation) {
this.Animation.cancel ();
}
this.Animation = this.el.animate ({{
Höhe: [Startheigheight, EndHeight]
}, {
Dauer: 400,
Leichtigkeit: 'Eventual-Out'
});
this.Animation.onfinish = () => this.onanimationFinish (falsch);
this.Animation.oncancel = () => this.isclosing = false;
}
open()
open()
wird aufgerufen, wenn wir das Akkordeon erweitern möchten. Diese Funktion steuert derzeit die Akkordeon -Animation nicht. Zuerst berechnen wir<details></details>
Die Höhe des Elements und wenden Sie es unter Verwendung des Inline -Stils auf das Element an. Sobald wir fertig sind, können wir seine open
Eigenschaft festlegen, um den Inhalt sichtbar zu machen. Da wir jedoch overflow: hidden
und feste Höhe für das Element, ist der Inhalt immer noch versteckt. Anschließend warten wir darauf, dass der nächste Frame die Funktion expand()
aufruft und eine Animation für das Element erstellt. offen() {
this.el.style.height = `$ {this.el.offseteight} px`;
this.el.open = true;
window.requestanimationFrame (() => this.expand ());
}
expand()
expand()
ähnelt der shrink()
-Funktion, die jedoch nicht von der aktuellen Höhe bis zur engen Höhe, sondern von der Höhe des Elements bis zur Endhöhe animiert. Die Endhöhe ist gleich<summary></summary>
Höhe plus Höhe des internen Inhalts. expandieren() {
this.isexpanding = true;
const startheight = `$ {this.el.offseteight} px`;
const endHeight = `$ {this.summary.offseteight this.content.offseteight} px`;
if (this.Animation) {
this.Animation.cancel ();
}
this.Animation = this.el.animate ({{
Höhe: [Startheigheight, EndHeight]
}, {
Dauer: 400,
Leichtigkeit: 'Eventual-Out'
});
this.Animation.onfinish = () => this.onanimationfinish (true);
this.Animation.oncancel = () => this.isexpanding = false;
}
onAnimationFinish()
open
und auf true
gesetzt, wenn das Akkordeon eingeschaltet ist, sodass wir das open
HTML -Attribut auf dem Element einstellen können, da es nicht mehr vom Browser behandelt wird. onanimationfinish (offen) {
this.el.open = offen;
this.Animation = null;
this.isclosing = false;
this.isexpanding = false;
this.el.style.height = this.el.style.overflow = '';
}
Akkordeon einrichten
<details></details>
Elemente verwenden unsere Akkordeonklasse. Zu diesem Zweck verwenden wir<details></details>
querySelectorAll
auf dem Tag und erstellen Sie für jedes Element eine neue Akkordeoninstanz. document.querySelectorAll ('Details'). foreach ((el) => {
neues Akkordeon (EL);
});
Beachten
<summary></summary>
Hab immer die gleiche Höhe wie der Inhalt.<summary></summary>
Fügen Sie die Polsterung hinzu, wenn Sie eingeschaltet werden, da dies während des Animationsprozesses zu Sprüngen führen kann. Gleiches gilt für interne Inhalte - es sollte eine feste Höhe haben, und wir sollten Inhalte mit Höhenänderungen während der Animationsöffnung vermeiden.<summary></summary>
Fügen Sie die Ränder zwischen den Inhalten hinzu, da es keine Höhenschlüsselrahmen berechnet. Verwenden Sie stattdessen die Polsterung direkt auf dem Inhalt, um einen gewissen Abstand hinzuzufügen. Zusammenfassen
/uploads/20250331/174338369667e9ec90190a3.jpg
174338369667e9ec90190a3.jpg durch den tatsächlichen Bildpfad ersetzt werden muss. Ich kann nicht auf die Bilddatei zugreifen oder verarbeiten, damit ich nur das ursprüngliche Format beibehalten kann.
Das obige ist der detaillierte Inhalt vonSo animieren Sie das Detailelement mit WAAPI. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

CSS Grid ist ein leistungsstarkes Tool zum Erstellen komplexer, reaktionsschneller Weblayouts. Es vereinfacht das Design, verbessert die Zugänglichkeit und bietet mehr Kontrolle als ältere Methoden.

In Artikel wird CSS Flexbox erörtert, eine Layoutmethode zur effizienten Ausrichtung und Verteilung des Raums in reaktionsschnellen Designs. Es erklärt die Verwendung von Flexbox, vergleicht es mit CSS -Gitter und Details Browser -Unterstützung.

In dem Artikel werden Techniken zum Erstellen von reaktionsschnellen Websites mithilfe von CSS erörtert, einschließlich Ansichtsfenster -Meta -Tags, flexiblen Gitter, Flüssigkeitsmedien, Medienabfragen und relativen Einheiten. Es deckt auch mit CSS -Raster und Flexbox zusammen und empfiehlt CSS -Framework

In dem Artikel wird die CSS-Box-Größeneigenschaft erörtert, in der die Berechnung der Elementabmessungen steuert. Es erklärt Werte wie Inhaltsbox, Border-Box und Padding-Box sowie deren Auswirkungen auf das Layout-Design und die Form von Formularausrichtung.

In Artikel wird das Erstellen von Animationen mithilfe von CSS, Schlüsseleigenschaften und Kombination mit JavaScript erläutert. Hauptproblem ist die Browserkompatibilität.

In Artikel werden CSS für 3D -Transformationen, wichtige Eigenschaften, Browserkompatibilität und Leistungsüberlegungen für Webprojekte erläutert. (Charakterzahl: 159)

In dem Artikel werden CSS -Gradienten (linear, radial, wiederholt) beschrieben, um die Website -Visuals, das Hinzufügen von Tiefe, Fokus und moderne Ästhetik zu verbessern.

In Artikel werden Pseudoelemente in CSS, deren Verwendung bei der Verbesserung des HTML-Stylings und der Unterschiede zu Pseudoklassen erläutert. Bietet praktische Beispiele.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung
