Was wäre, wenn HTML „Tabs“ hätte? Das wäre cool, sage ich. Dave hat einen Teil seiner Zeit und Energie zusammen mit einer Gruppe von „Tabvengers“ von OpenUI darauf verwendet. Viel Recherche führt zu einer kleinen Wendung
Unsere Recherche zeigte, dass es viele Variationen dessen gibt, was ein Tab-Steuerelement ausmacht. Es gibt auch viele Variationen bei den Markup-Mustern. Es gibt Variationen, die in Betriebssystemen, Videospielen, jQuery, React-Komponenten und Webkomponenten geschrieben sind. Aber wir glauben, dass wir einen Teil dieses Ozeans eingedämmt und einen vernünftigen Konsens darüber erzielt haben, was ein gutes
<tabs>Element ausmachen könnte… und es ist nicht<tabs>!!!
Es läuft irgendwie auf Design-Affordanzen hinaus. Sicher, die Art von UI, die wie buchstäbliche Papier-Mappen aussieht, ist eine Art Design-Affordanz. Aber sie ist funktional ähnlich wie ein Akkordeon, das nur eine Sache auf einmal zulässt. Und Akkordeons sind ziemlich ähnlich zu <details>/<summary> Elementen — also vielleicht das Hilfreichste, was HTML tun könnte, ist uns zu erlauben, *unterschiedliche* Design-Affordanzen zu verwenden und vielleicht sogar je nach Bedarf zwischen ihnen zu wechseln (z. B. bei unterschiedlichen Breiten).
Dann stellt sich die Frage: Welches HTML würde all diese verschiedenen Designs unterstützen? Darauf gibt es tatsächlich eine ziemlich befriedigende Antwort: ganz normales, auf Headern basierendes, semantisches HTML, also so etwas wie
<h2>Header</h2>
<p>Content</p>
<h2>Header</h2>
<p>Content</p>
<h2>Header</h2>
<p>Content</p>
Was bedeutet…
- Das Basis-HTML ist solide und kann als eine Designwahl problemlos gerendert werden
- Die Header können in dieser speziellen Designwahl zu einem „Tab“ werden
- Die Header können in dieser speziellen Designwahl zu einer „Zusammenfassung“ werden
Dies ist die Grundlage dessen, was die Tabvengers <spicy-sections> nennen. Wickeln Sie einfach dieses semantische HTML in die Webkomponente ein und verwenden Sie dann CSS, um zu steuern, welcher Designtyp wann aktiv wird.
<spicy-sections>
<h2>Header</h2>
<p>Content</p>
<h2>Header</h2>
<p>Content</p>
<h2>Header</h2>
<p>Content</p>
</spicy-sections>
spicy-sections {
--const-mq-affordances:
[screen and (max-width: 40em) ] collapse |
[screen and (min-width: 60em) ] tab-bar;
display: block;
}
Brian Kardell hat ein Beispiel erstellt
Ich habe auch eines erstellt, um ein Gefühl dafür zu bekommen
Hier ist ein Video für den Fall, dass Sie sich an einem Ort befinden, an dem Sie nicht einfach ein Browserfenster öffnen und die Größe ändern können, um selbst ein Gefühl dafür zu bekommen
Dies ist vorerst eine komplett handgefertigte Webkomponente, aber vielleicht kann sie die richtigen Gespräche auf Ebene der Spezifikationserstellung und Browser-Implementierung anstoßen, so dass wir eines Tages etwas Ähnliches in „echtem“ HTML und CSS bekommen. Ich wäre darüber glücklich, denn das bedeutet, dass weniger Entwickler (einschließlich mir) „Tabs“ von Grund auf neu codieren müssen und dabei wahrscheinlich die Barrierefreiheit vermasseln. Je mehr davon, desto besser.
Wenn Sie mehr über all das erfahren möchten, schauen Sie sich ShopTalk 486 bei 15:17 an. Außerdem gibt es hier einige Erkundungen von Hidde de Vries. Und wenn Sie mehr über Webkomponenten und deren unglaublich nützliche Anwendung erfahren möchten, nicht nur für Dinge wie diese, sondern für viel mehr, sehen Sie sich Dave's aktuellen Vortrag HTML with Superpowers an.
Schön.
Das von Ihnen verwendete Markup-Muster ähnelt dem, was ich in unserer Komponentenbibliothek verwende
Und auf Mobilgeräten / kleineren Bildschirmen verwandelt die visuelle Erscheinung die Tabs in Akkordeons.
[screen and (max-width: 40em) ] collapse |[screen and (min-width: 60em) ] tab-bar;
Gibt es irgendwo weitere Informationen zur Verwendung von eckigen Klammern hier?
Dieser Artikel hat mich daran erinnert, einen responsiven Akkordeon / Tab-Test zu aktualisieren, den ich vor ein paar Jahren gemacht habe, um eine tabellarische Benutzeroberfläche zu vereinfachen.
Habe das, was ich ursprünglich vor einiger Zeit erstellt habe, heute mit Grid[ish] und inhaltsbasiertem Wachstum aktualisiert, unter: https://codepen.io/frownonline/pen/KNLPOg
Warum es noch kein natives Tab-Element [oder ein responsives Menü-Toggle-Element wie Details/Summary] gibt, bleibt mir ein Rätsel. Auf Skripte zurückzugreifen, um diese grundlegenden Steuerelemente zu handhaben, erscheint mir hacky [selbst wenn das JS effizient und elegant ist].
Hallo Frown,
Das sieht für mich gut aus – bin kein Experte. Was meinst du mit „Muss verfeinert werden“?
PB