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!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

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

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

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

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

CSS -Bl?cke Seitenrenderung, da Browser inline und externe CSS standardm??ig als wichtige Ressourcen anzeigen, insbesondere mit importierten Stylesheets, Header gro?er Mengen an Inline -CSS und nicht optimierten Medienfragestilen. 1. extrahieren kritische CSS und einbetten Sie es in HTML ein; 2. Verz?gerung des Ladens nichtkritischer CSS durch JavaScript; 3.. Verwenden Sie Medienattribute, um das Laden wie Druckstile zu optimieren. 4. Komprimieren und verschmelzen CSS, um Anfragen zu reduzieren. Es wird empfohlen, Tools zum Extrahieren von Schlüssel -CSS zu verwenden, REL = "Vorspannung" zu kombinieren, und verwenden Sie die asynchrone Belastung und verwenden Sie die Medienverz?gerungsladeverletzung, um eine überm??ige Aufteilung und eine komplexe Skriptsteuerung zu vermeiden.

Im folgenden Tutorial werde ich Ihnen zeigen, wie Sie Lottie -Animationen in Figma erstellen. Wir werden zwei farbenfrohe Designs verwenden, um zu veranlassen, wie Sie in Figma animieren k?nnen, und dann werde ich Ihnen zeigen, wie Sie von Figma zu Lottie -Animationen wechseln. Alles was Sie brauchen ist eine kostenlose Feige

ThebestApproachforcssDependsonTheProject'Sspecificneeds.forlargerProjects, externalcssisbetterDuetomaintainability;

Csssmostlycase-unempfindlich, buturlsandfontfamilynamesarecase-sensitiv.1) Eigenschaften und ValueslikeColor: rot; sensitiv.2) URLSMUTMATTHESERVER'SCASE, z.

AutoPrefixer ist ein Tool, das die Pr?fixe von Anbietern automatisch zu CSS -Attributen basierend auf dem Zielbrowserbereich hinzufügt. 1. Es l?st das Problem, die Pr?fixe mit Fehlern manuell aufrechtzuerhalten. 2. Arbeiten Sie das POSTCSS-Plug-in-Formular durch, analysieren Sie CSS, analysieren Sie Attribute, die vorangestellt werden müssen, und generieren Sie den Code gem?? Konfiguration. 3.. 4. Notizen enthalten nicht manuelles Hinzufügen von Pr?fixen, Konfigurationsaktualisierungen, Pr?fixe nicht alle Attribute, und es wird empfohlen, sie mit dem Pr?prozessor zu verwenden.

CSSCOUNTERSCANATOMATIONSNUMBERSEctions und.1) usecounter-resettoinitialize, counter-IncrementtoIncrease, und Counter () orcounters () todisplayValues.2) kombinierte withjavascriptfordynamiccontentToEsSureAccurateupdates.

In CSS sind Selektor- und Attributnamen fallempfindlich, w?hrend Werte, Namen, URLs und benutzerdefinierte Attribute fallempfindlich sind. 1. Die Auswahl- und Attributnamen sind unempfindlich, z. B. Hintergrundfarbe und Hintergrundfarbe sind gleich. 2. Die hexadezimale Farbe im Wert ist fallempfindlich, aber die benannte Farbe ist fallempfindlich, wie rot und rot ist ungültig. 3. Die URLs sind fallsempfindlich und k?nnen zu Ladeproblemen von Dateien führen. 4. Benutzerdefinierte Eigenschaften (Variablen) sind fallempfindlich und Sie müssen auf die Konsistenz des Falles bei der Verwendung achten.
