Das HTML5 <details></details>
-Element bietet eine prägnante Möglichkeit, zusammenklappbare Inhalte zu erstellen. Es ist jedoch eine bedeutende Usability -Herausforderung: Hash -Verbindungen, die Inhalte innerhalb eines zusammengebrochenen Abschnitts abzielen, enthüllt diesen Inhalt nicht. Dieser Artikel beschreibt eine progressiv verbesserte JavaScript -Lösung, einschließlich einer zugänglichen Polyfill für Browser, deren native Unterstützung fehlt, um dieses Problem zu lösen. <details></details>
Key Takeaways:
<details></details>
<details></details>
<details></details>
<details></details>
Das mit dem -Element gepaarte
(falls vorhanden) muss das erste oder letzte Kind sein; Alle anderen Inhalte sind zusammenklappbar. Das <details></details>
-attribut erzwingt, dass der Inhalt zunächst sichtbar ist. Derzeit unterstützt nur Chrome <summary></summary>
vollständig. Das folgende Bild zeigt das Rendering von Chrom: <summary></summary>
open
<details></details>
Erstellen eines Polyfills
Ein grundlegender Polyfill erfasst native Unterstützung über die Eigenschaft . Native Implementierungen erfordern keine manuellen
-attributaktualisierungen, die ARIA -Attribute müssen jedoch noch Management benötigen. Eine typische Struktur sieht so aus:
open
open
Das Skript verwaltet das Attribut
<details open="open"> <summary>This is the summary element</summary> <div>This is the expanding content</div> </details>
aria-expanded
A Praping
details > div[aria-expanded="false"] { display: none; }
Eigenschaften, insbesondere für ältere Browser wie IE7, die zusätzliche Style -Handhabung erforderten. Die Funktion <div>
überlastet Browser -Inkonsistenzen in der Tastatur Klicken Sie auf Ereignisereignis: aria-expanded
display
addClickEvent
function addClickEvent(node, callback) { // ... (function body as in original article) ... }
Das Kernproblem entsteht, wenn ein Hash-Link (beispielsweise#First-Content) auf ein Element in einem zusammengebrochenen -Region abzielt. Die Seite scrollt nicht zum Ziel. Es bleibt oben und lässt das Ziel versteckt.
<details>
Behebung des Hash -Problems
Die rekursive -Funktion löst dies:
<details open="open"> <summary>This is the summary element</summary> <div>This is the expanding content</div> </details>
Diese Funktion erweitert rekursiv alle Vorfahren <details></details>
Elemente, die das Ziel enthalten. Es wird auf Seite geladen für location.hash
und auf internen Linkklicks. Um eine zuverlässige Scrollen zu gewährleisten, wird window.scrollBy
nach der Erweiterung verwendet und das Ziel im Ansichtsfenster positioniert. Das Originalverhalten (kein automatisches Scrollen auf der Seite aktualisiert) wird beibehalten. location.hash
Schlussfolgerung
Diese verbesserte Lösung, die als "Omnifill" bezeichnet wird, geht über das grundlegende Polyfilling hinaus. Es verbessert die Benutzerfreundlichkeit und Zugänglichkeit für alle Browser und befasst sich mit inhärenten Einschränkungen des -Elements. <details></details>
häufig gestellte Fragen (FAQs) zum HTML -Detailelement
(Der FAQS -Abschnitt aus der ursprünglichen Eingabe bleibt unverändert.)Das obige ist der detaillierte Inhalt vonBehebung des Detailelements. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!