<details>: Das Details-Offenlegungselement
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
* Some parts of this feature may have varying levels of support.
Das <details>
HTML-Element erstellt ein Offenlegungs-Widget, bei dem Informationen nur sichtbar sind, wenn das Widget in den offenen Zustand umgeschaltet wird. Eine Zusammenfassung oder ein Label muss mit dem <summary>
-Element bereitgestellt werden.
Ein Offenlegungs-Widget wird typischerweise am Bildschirm mit einem kleinen Dreieck angezeigt, das sich dreht (oder wendet), um den geöffneten/geschlossenen Zustand anzuzeigen, mit einem Label neben dem Dreieck. Die Inhalte des <summary>
-Elements werden als Label für das Offenlegungs-Widget verwendet. Die Inhalte des <details>
bieten die zugängliche Beschreibung für das <summary>
.
Probieren Sie es aus
<details>
<summary>Details</summary>
Something small enough to escape casual notice.
</details>
details {
border: 1px solid #aaa;
border-radius: 4px;
padding: 0.5em 0.5em 0;
}
summary {
font-weight: bold;
margin: -0.5em -0.5em 0;
padding: 0.5em;
}
details[open] {
padding: 0.5em;
}
details[open] summary {
border-bottom: 1px solid #aaa;
margin-bottom: 0.5em;
}
Ein <details>
-Widget kann sich in einem von zwei Zuständen befinden. Der Standardzustand geschlossen zeigt nur das Dreieck und das Label innerhalb von <summary>
an (oder eine vom User Agent definierte Standardzeichenfolge, wenn kein <summary>
vorhanden ist).
Wenn der Benutzer auf das Widget klickt oder es fokussiert und dann die Leertaste drückt, "dreht" es sich und zeigt seinen Inhalt an. Der häufige Gebrauch eines Dreiecks, das sich dreht oder wendet, um das Öffnen oder Schließen des Widgets darzustellen, ist der Grund, warum diese manchmal "Twisty" genannt werden.
Sie können CSS verwenden, um das Offenlegungs-Widget zu gestalten, und Sie können das Widget programmatisch öffnen und schließen, indem Sie dessen open
-Attribut setzen oder entfernen. Leider gibt es derzeit keine eingebaute Möglichkeit, die Übergänge zwischen geöffnetem und geschlossenem Zustand zu animieren.
Standardmäßig ist das Widget, wenn es geschlossen ist, nur so hoch, dass es das Offenlegungsdreieck und die Zusammenfassung anzeigt. Wenn es geöffnet ist, erweitert es sich, um die darin enthaltenen Details anzuzeigen.
Vollständig standardkonforme Implementierungen wenden automatisch das CSS
auf das display
: list-item<summary>
-Element an. Sie können dies oder das ::marker
Pseudoelement verwenden, um das Offenlegungs-Widget zu gestalten.
Attribute
Dieses Element enthält die globalen Attribute.
open
-
Dieses boolesche Attribut gibt an, ob die Details — also der Inhalt des
<details>
-Elements — derzeit sichtbar sind. Die Details werden angezeigt, wenn dieses Attribut existiert, oder ausgeblendet, wenn dieses Attribut fehlt. Standardmäßig fehlt dieses Attribut, was bedeutet, dass die Details nicht sichtbar sind.Hinweis: Sie müssen dieses Attribut vollständig entfernen, um die Details auszublenden.
open="false"
macht die Details sichtbar, da dieses Attribut boolesch ist. name
-
Dieses Attribut ermöglicht es, mehrere
<details>
-Elemente zu verbinden, wobei nur eines gleichzeitig geöffnet sein kann. Dies erlaubt es Entwicklern, UI-Features wie Akkordeons leicht ohne Skripting zu erstellen.Das
name
-Attribut gibt einen Gruppennamen an — geben Sie mehreren<details>
-Elementen denselbenname
-Wert, um sie zu gruppieren. Nur eines der gruppierten<details>
-Elemente kann gleichzeitig geöffnet sein — das Öffnen eines wird ein anderes schließen. Wenn mehreren gruppierten<details>
-Elementen dasopen
-Attribut gegeben wird, wird nur das erste in der Quellreihenfolge geöffnet dargestellt.Hinweis:
<details>
-Elemente müssen nicht aneinander angrenzen, um Teil derselben Gruppe zu sein.
Ereignisse
Zusätzlich zu den üblichen von HTML-Elementen unterstützten Ereignissen unterstützt das <details>
-Element das toggle
-Ereignis, das immer dann an das <details>
-Element gesendet wird, wenn sich sein Zustand zwischen geöffnet und geschlossen ändert. Es wird nach der Zustandsänderung gesendet, obwohl wenn sich der Zustand mehrmals ändert, bevor der Browser das Ereignis senden kann, die Ereignisse zusammengefasst werden, damit nur eines gesendet wird.
Sie können einen Ereignis-Listener für das toggle
-Ereignis verwenden, um zu erkennen, wann sich der Zustand des Widgets ändert:
details.addEventListener("toggle", (event) => {
if (details.open) {
/* the element was toggled open */
} else {
/* the element was toggled closed */
}
});
Beispiele
Ein einfaches Offenlegungsbeispiel
Dieses Beispiel zeigt ein einfaches <details>
-Element mit einem <summary>
.
<details>
<summary>System Requirements</summary>
<p>
Requires a computer running an operating system. The computer must have some
memory and ideally some kind of long-term storage. An input device as well
as some form of output device is recommended.
</p>
</details>
Ergebnis
Erstellen einer geöffneten Offenlegungsbox
Um die <details>
-Box im geöffneten Zustand zu starten, fügen Sie das boolesche open
-Attribut hinzu:
<details open>
<summary>System Requirements</summary>
<p>
Requires a computer running an operating system. The computer must have some
memory and ideally some kind of long-term storage. An input device as well
as some form of output device is recommended.
</p>
</details>
Ergebnis
Mehrere benannte Offenlegungsboxen
Wir fügen mehrere <details>
-Boxen hinzu, alle mit dem gleichen Namen, sodass immer nur eine gleichzeitig geöffnet werden kann:
<details name="reqs">
<summary>Graduation Requirements</summary>
<p>
Requires 40 credits, including a passing grade in health, geography,
history, economics, and wood shop.
</p>
</details>
<details name="reqs">
<summary>System Requirements</summary>
<p>
Requires a computer running an operating system. The computer must have some
memory and ideally some kind of long-term storage. An input device as well
as some form of output device is recommended.
</p>
</details>
<details name="reqs">
<summary>Job Requirements</summary>
<p>
Requires knowledge of HTML, CSS, JavaScript, accessibility, web performance,
privacy, security, and internationalization, as well as a dislike of
broccoli.
</p>
</details>
Ergebnis
Versuchen Sie, alle Offenlegungs-Widgets zu öffnen. Wenn Sie eines öffnen, schließen sich alle anderen automatisch.
Anpassen des Aussehens
Nun wollen wir etwas CSS anwenden, um das Aussehen der Offenlegungsbox anzupassen.
CSS
details {
font:
16px "Open Sans",
Calibri,
sans-serif;
width: 620px;
}
details > summary {
padding: 2px 6px;
width: 15em;
background-color: #ddd;
border: none;
box-shadow: 3px 3px 4px black;
cursor: pointer;
}
details > p {
border-radius: 0 0 10px 10px;
background-color: #ddd;
padding: 2px 6px;
margin: 0;
box-shadow: 3px 3px 4px black;
}
details:open > summary {
background-color: #ccf;
}
Dieses CSS erzeugt ein Aussehen, das einer Registerkarte ähnlich ist, bei der das Klicken auf die Registerkarte sie öffnet, um ihren Inhalt anzuzeigen.
Hinweis:
In Browsern, die die :open
Pseudo-Klasse nicht unterstützen, können Sie den Attribut-Selektor details[open]
verwenden, um das <details>
-Element im offenen Zustand zu gestalten.
HTML
<details>
<summary>System Requirements</summary>
<p>
Requires a computer running an operating system. The computer must have some
memory and ideally some kind of long-term storage. An input device as well
as some form of output device is recommended.
</p>
</details>
Ergebnis
Sehen Sie sich die Seite <summary>
für ein Beispiel für die Anpassung des Offenlegungs-Widgets an.
Technische Zusammenfassung
Inhaltskategorien | Fließender Inhalt, Abschnitts-Wurzel, interaktiver Inhalt, fühlbarer Inhalt. |
---|---|
Zulässiger Inhalt |
Ein <summary> -Element gefolgt von
fließendem Inhalt.
|
Tag-Auslassung | Keine, sowohl das startende als auch das endende Tag sind erforderlich. |
Zulässige Eltern | Jedes Element, das fließenden Inhalt akzeptiert. |
Implizierte ARIA-Rolle | group |
Zulässige ARIA-Rollen | Keine role erlaubt |
DOM-Interface | [`HTMLDetailsElement`](/de/docs/Web/API/HTMLDetailsElement) |
Spezifikationen
Specification |
---|
HTML # the-details-element |