Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

HTML-Element <details> zum Ein- und Ausblenden von Inhalten

Baseline
Weitgehend verfügbar
*

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Januar 2020 browserübergreifend verfügbar.

* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.

Das HTML-Element <details> erstellt ein Widget zum Ein- und Ausblenden von Informationen. Die Informationen sind nur sichtbar, wenn das Widget geöffnet ist. Eine Zusammenfassung oder Beschriftung muss mit dem Element <summary> bereitgestellt werden.

Ein solches Widget wird auf dem Bildschirm üblicherweise mit einem kleinen Dreieck dargestellt, das sich dreht, um den geöffneten oder geschlossenen Zustand anzuzeigen. Neben dem Dreieck steht eine Beschriftung. Der Inhalt des Elements <summary> dient als Beschriftung für das Widget. Der Inhalt von <details> stellt die zugängliche Beschreibung für <summary> bereit.

Probieren Sie es aus

<details>
  <summary>Details</summary>
  Something small enough to escape casual notice.
</details>
details {
  border: 1px solid #aaaaaa;
  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 #aaaaaa;
  margin-bottom: 0.5em;
}

Attribute

Dieses Element unterstützt die globalen Attribute.

open

Dieses boolesche Attribut gibt an, ob die Details – also der Inhalt des Elements <details> – derzeit sichtbar sind. Die Details werden angezeigt, wenn das Attribut vorhanden ist, und ausgeblendet, wenn es fehlt. Standardmäßig fehlt das Attribut; die Details sind dann nicht sichtbar.

Hinweis: Sie müssen dieses Attribut vollständig entfernen, um die Details auszublenden. open="false" macht die Details sichtbar, da es sich um ein boolesches Attribut handelt.

name

Mit diesem Attribut können mehrere <details>-Elemente verbunden werden, sodass jeweils nur eines geöffnet sein kann. Dadurch können Entwickler UI-Komponenten wie Akkordeons ohne Skripte erstellen.

Das Attribut name legt einen Gruppennamen fest. Weisen Sie mehreren <details>-Elementen denselben name-Wert zu, um sie zu gruppieren. Von den gruppierten <details>-Elementen kann jeweils nur eines geöffnet sein: Wird eines geöffnet, schließt sich ein anderes. Wenn mehrere gruppierte <details>-Elemente das Attribut open haben, wird nur das erste in der Reihenfolge des Quellcodes geöffnet dargestellt.

Hinweis: <details>-Elemente müssen im Quellcode nicht unmittelbar aufeinanderfolgen, um derselben Gruppe anzugehören.

Hinweise zur Verwendung

Ein <details>-Widget kann sich in einem von zwei Zuständen befinden. Im standardmäßigen geschlossenen Zustand werden nur das Dreieck und die Beschriftung innerhalb von <summary> angezeigt (oder eine vom User Agent festgelegte Standardbeschriftung, wenn kein <summary> vorhanden ist).

Wenn Benutzer auf das Widget klicken oder es fokussieren und dann die Leertaste drücken, öffnet es sich und zeigt seinen Inhalt an. Weil zum Anzeigen des Öffnens und Schließens häufig ein sich drehendes Dreieck verwendet wird, werden solche Widgets manchmal „Twisties“ genannt.

Sie können das Widget programmgesteuert öffnen und schließen, indem Sie sein Attribut open setzen oder entfernen.

Das Element <details> gestalten

Das Element <details> lässt sich als Container für zwei Elemente betrachten: das Element <summary>, das sowohl im geöffneten als auch im geschlossenen Zustand sichtbar ist, und das Pseudoelement ::details-content, dessen Inhalt im geschlossenen Zustand ausgeblendet ist.

Das Element <summary> erhält automatisch den display-Wert list-item. Sie können seine Markierung wie eine Listenmarkierung gestalten, etwa mit list-style-type, list-style-position und ::marker. Siehe auch Das Symbol der Zusammenfassung ändern.

Mit dem Pseudoelement ::details-content können Sie den Übergang zwischen geöffnetem und geschlossenem Zustand animieren. Ein Beispiel finden Sie auf der Referenzseite zu ::details-content.

Ereignisse

Zusätzlich zu den üblichen Ereignissen für HTML-Elemente unterstützt das Element <details> das Ereignis toggle. Es wird am <details>-Element ausgelöst, wenn dessen Zustand zwischen geöffnet und geschlossen wechselt. Das Ereignis wird nach der Zustandsänderung gesendet. Ändert sich der Zustand jedoch mehrmals, bevor der Browser das Ereignis auslösen kann, werden die Ereignisse zusammengefasst, sodass nur eines gesendet wird.

Mit einem Event Listener für das Ereignis toggle können Sie erkennen, wann das Widget seinen Zustand ändert:

js
details.addEventListener("toggle", (event) => {
  if (details.open) {
    /* the element was toggled open */
  } else {
    /* the element was toggled closed */
  }
});

Beispiele

Einfaches Beispiel zum Ein- und Ausblenden

Dieses Beispiel zeigt ein einfaches <details>-Element mit einem <summary>.

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

Ein zunächst geöffnetes Element erstellen

Damit das <details>-Element anfangs geöffnet ist, fügen Sie das boolesche Attribut open hinzu:

html
<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 Elemente zum Ein- und Ausblenden

Hier werden mehrere <details>-Elemente mit demselben Namen verwendet, sodass jeweils nur eines geöffnet sein kann:

html
<details name="requirements">
  <summary>Graduation Requirements</summary>
  <p>
    Requires 40 credits, including a passing grade in health, geography,
    history, economics, and wood shop.
  </p>
</details>
<details name="requirements">
  <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="requirements">
  <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 Widgets zu öffnen. Wenn Sie eines öffnen, schließen sich alle anderen automatisch.

Darstellung anpassen

Nun verwenden wir etwas CSS, um die Darstellung des <details>-Elements anzupassen.

CSS

css
details {
  font:
    16px "Open Sans",
    "Calibri",
    sans-serif;
  width: 620px;
}

details > summary {
  padding: 2px 6px;
  width: 15em;
  background-color: #dddddd;
  border: none;
  box-shadow: 3px 3px 4px black;
  cursor: pointer;
}

details > p {
  border-radius: 0 0 10px 10px;
  background-color: #dddddd;
  padding: 2px 6px;
  margin: 0;
  box-shadow: 3px 3px 4px black;
}

details:open > summary {
  background-color: #ccccff;
}

Dieses CSS erzeugt eine Darstellung ähnlich einer Oberfläche mit Registerkarten: Ein Klick auf die Registerkarte öffnet sie und zeigt ihren Inhalt an.

Hinweis: In Browsern, die die Pseudoklasse :open nicht unterstützen, können Sie den Attributselektor details[open] verwenden, um das <details>-Element im geöffneten Zustand zu gestalten.

HTML

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

Auf der Seite zu <summary> finden Sie ein Beispiel zur Anpassung des Widgets.

Technische Zusammenfassung

Inhaltskategorien Flow content, Wurzelelement für Abschnitte, interaktiver Inhalt, wahrnehmbarer Inhalt.
Erlaubter Inhalt Ein <summary>-Element, gefolgt von Flow content.
Weglassen von Tags Keines; sowohl das Start- als auch das End-Tag sind erforderlich.
Erlaubte Elternelemente Jedes Element, das Flow content akzeptiert.
Implizite ARIA-Rolle group
Erlaubte ARIA-Rollen Keine role zulässig
DOM-Schnittstelle [`HTMLDetailsElement`](/de/docs/Web/API/HTMLDetailsElement)

Spezifikationen

Spezifikation
HTML
# the-details-element

Browser-Kompatibilität

Siehe auch