Kurze Erinnerung, dass Details/Zusammenfassung der einfachste Weg ist, jemals ein Akkordeon zu erstellen

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Gott segne das <details> Element. Wirf etwas Inhalt hinein und du hast eine zugängliche "Mehr anzeigen"-Interaktion mit fast null Aufwand.

Wirf ein <summary> hinein, um den Text des Expanders anzupassen.

Funktioniert hervorragend für FAQs.

Es gibt wirklich keine Grenzen, wie Sie diese gestalten können. Wenn Ihnen der Standard-Fokusring nicht gefällt, können Sie ihn entfernen, aber stellen Sie sicher, dass Sie irgendeine Art von Stil wieder hinzufügen.

Hier habe ich ein Header-Element für jeden erweiterbaren Abschnitt verwendet, das einen Fokus-Zustand hat, der andere interaktive Elemente auf der Seite nachahmt.

Die einzigen Browser, die dies nicht unterstützen, sind die von Microsoft (und Opera Mini, was sinnvoll ist – es ist nicht wirklich interaktiv).

Diese Daten zur Browserunterstützung stammen von Caniuse, wo Sie weitere Details finden. Eine Zahl gibt an, dass der Browser die Funktion ab dieser Version unterstützt.

Desktop

ChromeFirefoxIEEdgeSafari
1249Nein796

Mobil / Tablet

Android ChromeAndroid FirefoxAndroidiOS Safari
12712746.0-6.1

Aber selbst dann ist es, als ob alle Abschnitte geöffnet wären, also ist es keine große Sache

Möchten Sie das Standarddreieck gestalten? Seltsamerweise geschieht dies auf die übliche Weise über die Eigenschaften von list-style. Aber Blink-basierte Browser haben das noch nicht umgesetzt, daher haben sie einen proprietären Weg, dies zu tun. Sie können jedoch kombiniert werden. Hier ist ein Beispiel für den Ersatz durch ein Bild

summary {
  list-style-image: url(right-arrow.svg);
}

summary::-webkit-details-marker {
  background: url(right-arrow.svg);
  color: transparent;
}

Leider drehen sie sich nicht, und es gibt auch keine Möglichkeit, das Standarddreieck zu animieren. Eine Idee könnte sein, den :focus-Zustand anzusprechen und Hintergründe zu tauschen

Aber das scheint auf WebKit und Blink beschränkt zu sein, und selbst dann kehrt der Pfeil zurück, sobald das Element den Fokus verliert, auch wenn es noch erweitert ist.

Barrierefreiheit (Accessibility)