Das HTML -Element bietet eine einfache Möglichkeit, erweiterbare und zusammenklappbare Inhaltsabschnitte zu erstellen. Lassen Sie uns untersuchen, wie diese Funktionalität mit reibungslosen CSS -Übergängen verbessert und die Einschränkungen der Verwendung von CSS allein angehen. <details>
Implementierung sieht so aus: <details>
<code class="language-html"><details> <summary>Click to expand</summary> <p>This is the content.</p> </details></code>
<code class="language-css">details#my-details { transition-duration: 300ms; }</code>
Lösung
mit einem anderen Element zu wickeln (hier, a <details>
). Dies ermöglicht es uns, den Inhalt separat zu zielen und zu animieren: <div>
<code class="language-html"><details id="my-details"> <summary>Click to expand</summary> <div> <p>This is the content.</p> </div> </details></code>
<code class="language-javascript">const details = document.getElementById("my-details"); const summary = details.firstElementChild; const content = summary.nextElementSibling; let isAnimating = false; summary.onclick = (ev) => { ev.preventDefault(); if (isAnimating) return; const contentHeight = content.getBoundingClientRect().height; isAnimating = true; // Closing <details> if (details.open) { return content .animate( { height: [contentHeight + 'px', '0px'] }, { duration: 300 } ) .finished .then(() => details.open = isAnimating = false); } // Opening <details> details.open = true; content.animate( { height: ['0px', contentHeight + 'px'] }, { duration: 300 } ).finished.then(() => isAnimating = false); };</code>
, um den Höhepunkt des Inhaltsumschlags zu steuern. Beachten Sie, dass in einigen Fällen die CSS des Content Wrapper hinzugefügt wird, um optimale Ergebnisse zu erzielen. animate()
overflow: hidden;
Erläuterung
öffnet oder schließt. Die Variable <summary>
verhindert, dass mehrere Animationen gleichzeitig ausgeführt werden. animate()
<details>
Die `isanimating` variable isAnimating
Schlussfolgerung isAnimating
-Methode und ihre Fähigkeiten für fortgeschrittenere Animationen empfohlen werden. <details>
Das obige ist der detaillierte Inhalt vonWie ich den Übergang zum