Twitter- und G+-Gefolge bat mich, ein paar Zeilen über zwei neue HTML5-Elemente zu verlieren; also frisch ans Werk! Die Elemente <details>
(Specs) und <summary>
(Specs) gehören zu den wenigen HTML5-Neuheiten, mit denen sich auch ganz ohne JavaScript etwas spürbar neues in den Browser bringen lässt. Die Spezifikationen lassen uns wissen:
n
The details element represents a disclosure widget from which the user can obtain additional information or controls […] The first summary element child of the element, if any, represents the summary or legend of the details. […] The rest of the element’s contents represents the additional information or controls.
n
Auf deutsch gesagt: der Inhalt eines <details>
-Elements wird vor dem User so lange versteckt, bis der Surfer das im <details>
-Element befindliche <summary>
-Element anklickt oder anderweitig (z.B. via Tastaturnavigation) aktiviert. Als Inhalt gilt dabei alles bis auf das erste <summary>
-Element – dieses bleibt immer sichtbar. Die beiden neuen Elemente bilden also zusammen ein interaktives Paket.
n
Nützlich kann dies zum Beispiel für das Verstecken von optionalen Interface-Elementen sein, die nicht ständig im Blickfeld des Nutzers sein müssen wie die Steuerung eines Videoplayers, Statusanzeigen oder Konfigurationsoptionen einer Webapp:
n
<video id="film" width="320" height="180" autoplay>n <source src="video.mp4" type="video/mp4">n <source src="video.webm" type="video/webm">n <source src="video.ogv" type="video/ogg">n</video>nn<details>n <summary>Videosteuerung ein/ausblenden</summary>n <p>n <button id="start" onclick="start()">Start/Pause</button>n <button id="stumm" onclick="stumm()">Stummschalten</button>n <button id="lauter" onclick="lauter()">Lauter</button>n <button id="leiser" onclick="leiser()">Leiser</button>n </p>n</details>
n
In Browsern mit Unterstützung für <details>
und <summary>
(was Stand heute nur Chrome zu sein scheint) werden die Buttons erst sichtbar, nachdem man das <summary>
-Element angeklickt hat:
n

n
In Aktion (funktioniert nur in aktuellen Chrome-Versionen)
n
Wird kein <summary>
-Element in dem <details>
-Element gefunden, soll der Browser selbst eine <summary>
mit einem Standardtext einfügen. Fügt man das open
-Attribut ein (boolsches Attribut, in XHTML open="open"
, sonst einfach nur open
), ist der Inhalt des <details>
-Elements zu Beginn sichtbar. Chrome verhält sich auch bereits rundum standardkonform und implementiert sogar die korrekten User-Agent-Stylesheets.
n
In modernen Webapplikationen kann man die Funktionalität von <details>
und <summary>
sicher häufig gebrauchen, so dass man die Einführung der beiden neuen Elemente durchaus gutheißen kann – auch wenn man das Verhalten der beiden Neulinge mit wenigen Zeilen JavaScript nachbauen könnte. Die Unterscheid zwischen der <details>
–<summary>
-Kombination und einer JavaScript-Lösung sind im Einzelnen:
n
- n
- auch wenn die JavaScript-Lösung recht trivial wäre, sind
<details>
und<summary>
noch einfacher einzubauen und über dasopen
-Attribut zu steuern <details>
und<summary>
funktionieren auch bei abgeschaltetem JavaScript<details>
und<summary>
lasen sich, soweit ich das bisher beurteilen kann, nicht anpassen, Animationen und ähnliches sind nicht drin- Das
<summary>
-Element scheint zur Zeit noch nicht tastaturtauglich zu sein, weder lies es sich bei meinen Test antabben noch über einen Accesskey steuern
n
n
n
n
n
Angesichts der mangelnden Anpassbarkeit weiß ich nicht wirklich, ob sich <details>
und <summary>
außerhalb von Prototypen (wo die einfache Umsetzung von Vorteil ist) wirklich in naher Zukunft durchsetzen werden. Hinzu kommt die zur Zeit sehr sparsame Browserunterstützung. Zwar ließe sich ein JavaScript-Ersatz schnell programmieren, aber wenn man einen solchen Ersatz hat, der tastaturfreundlich und schick animiert ist, braucht man dann noch die Original-Elemente <details>
und <summary>
? Man wird sehen was zukünftige Entwicklungen mit sich bringen. Aber zumindest für Prototypen sind die beiden Elemente schon mal gut zu gebrauchen.
Schreibe einen Kommentar