Nehmen wir an, Sie haben eine Doppelüberschriften-Situation. Eine kleine über einer großen. Das kommt, ich weiß nicht, eine Milliarde Mal am Tag vor, würde ich sagen. Welches HTML nehmen Sie dafür? Wage ich zu sagen, es kommt darauf an? Aber haben Sie alle Optionen in Betracht gezogen? Und wie wirken sich diese Optionen semantisch und zugänglichkeitsmäßig aus?
Wie wir es hier manchmal tun, gehen wir die Optionen durch.
Die visuellen Beispiele
Gehen wir davon aus, dass dies nicht die <h1> auf der Seite sind. Nicht, dass sich die Dinge dramatisch ändern würden, wenn es doch eine wäre, aber nur um die Bühne zu bereiten. Ich finde, das kommt am häufigsten in Unterabschnitten oder Karten vor.
Hier ist ein Beispiel, das ein Freund neulich in einem Gespräch aufbrachte

Hier ist eines, an dem ich auch erst kürzlich gearbeitet habe

Und hier ist eine klassische Karte

Option 1: Die alte Methode mit <h3> und dann <h2>
Die kleinere ist oben und die größere darunter, und offensichtlich ist <h3> immer kleiner als ein <h2>, richtig?
<h3>Subheading</h3>
<h2>Heading</h2>
Das ist wahrscheinlich ein ziemlich verbreiteter Gedanke und meine geringste bevorzugte Methode.
Ich würde es vorziehen, Klassennamen zu verwenden, damit die Formatierung auf diese Klassen beschränkt ist.
<h3 class="card-subhead">Subheading</h3>
<h2 class="card-head">Heading</h2>
Treffen Sie keine semantischen Entscheidungen, insbesondere solche, die die Zugänglichkeit betreffen, basierend auf dieser rein visuellen Behandlung.
Das größere Seltsame ist die Verwendung von zwei Überschriftenelementen überhaupt. Zwei Überschriften für einen einzelnen Inhalt zu verwenden, fühlt sich nicht richtig an. Die Kombination fühlt sich an wie: „Hey, hier ist ein wichtiger neuer Abschnitt, und hier ist eine weitere Unterüberschrift, weil es davon mehr in diesem Unterabschnitt geben wird, also ist diese nur für diesen ersten Unterabschnitt.“ Aber dann gibt es keine weiteren Unterabschnitte und keine weiteren Unterüberschriften. Selbst wenn das nicht seltsam ist, ist die Reihenfolge seltsam, da die Unterabschnittsüberschrift zuerst kommt.
Wenn Sie zwei verschiedene Überschriftenelemente verwenden möchten, scheint mir die kleinere Überschrift fast eher als die <h2> sinnvoll zu sein, was uns zu… führt
Option 2: Kleine & mächtige <h2> und <h3>
Wenn wir Klassen im Einsatz haben und die Unterüberschrift kontextuell als die dominanteste Überschrift fungiert, dann können wir das tun
<h2 class="card-subheading">Subheading</h2>
<h3 class="card-heading">Heading</h3>
Nur weil diese <h2> visuell kleiner ist, heißt das nicht, dass sie nicht immer noch die dominante Überschrift in der Dokumentengliederung sein kann. Wenn Sie sich das Beispiel aus CodePen oben ansehen, wirkt der Titel „Context Switching“ besser als Überschrift als der folgende Satz. Ich denke, die Verwendung von <h2> für diese kleinere Überschrift funktioniert dort gut und hält die Struktur „normaler“ (nehme ich an), da die <h2> zuerst kommt.
Immer noch fühlt sich die Verwendung von zwei Überschriften für einen Abschnitt seltsam an.
Option 3: Eine Überschrift, ein Div
Vielleicht muss nur eine der beiden eine Überschrift sein? Das erscheint mir im Allgemeinen richtiger. Das habe ich definitiv schon gemacht
<div class="card-subheading">Subheading</div>
<h3 class="card-heading">Heading</h3>
Das fühlt sich in Ordnung an, abgesehen von der Seltsamkeit, dass die Unterüberschrift relevante Inhalte haben könnte und Leute das möglicherweise verpassen könnten, wenn sie über einen Screenreader zur Überschrift navigieren und von dort aus weiterlesen. Ich schätze, man könnte die visuelle Reihenfolge vertauschen…
<hgroup> <!-- hgroup is deprecated, just defiantly using it anyway -->
<h3 class="card-heading">Heading</h3>
<div class="card-subheading">Subheading</div>
</hgroup>
hgroup {
display: flex;
flex-direction: column;
}
hgroup .card-subheading {
/* Visually, put on top, without affecting source order */
order: -1;
}
Aber ich denke, die visuelle Reihenfolge so zu verändern ist generell ein No-Go, also unangenehm für sehende Screenreader-Nutzer. Also verraten Sie niemandem, dass ich Ihnen das gezeigt habe.
Option 4: Alles in einer Überschrift belassen
Da wir ohnehin nur einen Teil des Inhalts als Überschrift anzeigen, scheint es richtig, nur eine einzige Überschrift zu verwenden.
<h2>
<strong>Subheading</strong>
Heading
</h2>
Die Verwendung des <strong>-Elements darin gibt uns einen Anker im CSS, um denselben Stil zu erzielen. Zum Beispiel…
h2 strong {
display: block;
font-size: 75%;
opacity: 0.75;
}
Der Trick hierbei ist, dass die Überschriften dann als Einheit funktionieren/gelesen werden müssen. Entweder sie lesen sich natürlich zusammen, oder man könnte einen Doppelpunkt : oder etwas Ähnliches verwenden.
<h2>
<strong>New Podcast:</strong>
Struggling with Basic HTML
</h2>
ARIA-Rolle
Es stellt sich heraus, dass es eine ARIA-Rolle gibt, die für Untertitel vorgesehen ist
Also wie
<h2 class="card-heading">Heading</h2>
<div role="doc-subtitle">Subheading</div>
Ich mag Stile, die auf ARIA-Rollen basieren, im Allgemeinen (weil es deren korrekte Verwendung erfordert), also könnten die Stile direkt damit gemacht werden
[role="doc-subtitle"] { }
Tests von Steve und Léonie deuten darauf hin, dass Browser es generell als „Überschrift ohne Ebene“ behandeln. JAWS ist die Ausnahme, die es wie eine <h2> behandelt. Das scheint in Ordnung… vielleicht? Steve findet sogar dass es in Ordnung ist, die Unterüberschrift zuerst zu setzen.
Das schlechte und das hässliche
Was hier passiert, ist, dass die Unterüberschrift dem Haupttitel einen allgemeinen Kontext gibt – quasi als Beschriftung.
<label for="card-heading-1">Subheading</label>
<h2 id="card-heading-1" class="card-heading">Heading</h2>
Aber wir haben hier keine Formularelemente, also wird davon abgeraten. Eine weitere Möglichkeit, es zu einer einzigen Überschrift zu machen, wäre die Verwendung eines Pseudoelements, um die Unterüberschrift zu platzieren, wie z.B.:
<h2 class="card-heading" data-subheading="Subheading">Heading</h2>
.card-head::before {
content: attr(data-subheading);
display: block;
font-size: 75%;
opacity: 0.75;
}
Früher haben Screenreader Pseudoinhalte ignoriert, aber es ist besser geworden, aber immer noch nicht perfekt. Das macht dies nur etwas nutzbarer, aber der Text ist immer noch nicht auswählbar und nicht auf der Seite auffindbar, also würde ich das lieber lassen.
Ich nutze die Vorteile von Klassen, speziell in Bootstrap, was meiner Meinung nach der beste Weg ist
<h2 class="h3">Hauptüberschrift, die visuell klein ist</h2><h3 class="h2">Visuell Hauptüberschrift</h3>
CSS bevorzugt also Klassen-Selektoren gegenüber Elementen, das hilft.
Moment, ist hgroup veraltet? Ich kann das auf der WHATWG-Seite für hgroup nicht finden. Sollte ich woanders nach einer offiziellen Erklärung suchen?
Schauen Sie sich die Nutzungshinweise auf MDN an: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hgroup#Usage_notes
Es ist in der WHATWG-Version, aber nicht in der W3C-Version des Standards. Und in der Praxis können Sie das hgroup-Element verwenden, aber kein Browser nutzt es, um das Dokument tatsächlich zu gliedern. Es hat also keinen wirklichen semantischen Wert.
Hallo Glen – es ist in der HTML-Spezifikation des W3C veraltet, aber nicht in der des WHATWG. Es gibt noch einiges mehr dazu auf der MDN-Seite für hgroup.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hgroup#Usage_notes
Ein besserer Kontext ist hier zu finden: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hgroup
Es scheint, dass man es technisch immer noch verwenden kann, und die meisten Browser unterstützen es.
aria-rolesieht interessant aus, aber nach allem, was ich sehe, bezieht es sich nur auf H1, daher können Sie es nicht für Unterüberschriften verwenden.Von den Alternativen, die Sie vorstellen, hat mir #4 gefallen, denn oft ist es sinnvoll, das Ganze als einzelne Überschrift zu haben.
Wäre es nicht auch in vielen Fällen gültig, wenn Sie einen
<header>innerhalb eines<section>verwenden würden? Dann könnten Sie die gewünschte H-Tag zusammen mit einem<p>haben.Danke für die Info zu
role="doc-subtitle". Ich wusste nicht, dass es eine so nützliche ARIA-Rolle für Untertitel gibt.Nachdem ich die Tweets geprüft hatte, fand ich eine Antwort, die den Unterschied zwischen einer Unterüberschrift und einem Teaser erklärte. Das ergibt irgendwie Sinn. Meiner Meinung nach ist ein Teaser besser in ein
small-Element eingeschlossen als in ein Element mitrole="doc-subtitle".Wie wäre es mit etwas wie diesem?
und
Sie könnten einfach
flex-direction: column-reverse;in derdiv-Regel verwenden, um die Notwendigkeit derh2- undh3-Regeln zu eliminierenLöst das Problem visuell, aber die Tabulatorreihenfolge ist etwas umständlich und bricht den Fluss, falls das ein großes Anliegen ist.
Ich werde die Überschriften und Unterüberschriften in HTML implementieren, um alle Änderungen zu sehen. Gute Arbeit!
Option 4 wäre das, was ich verwenden würde, aber ich glaube nicht, dass
<strong>die beste Wahl ist, da sie dem Inhalt semantische Bedeutung verleiht, was für eine Unterüberschrift etwas seltsam sein könnte.Ich habe immer Option 4 verwendet, oder eine Variante mit einem
<span>.Ich hatte zuvor nichts von
role="doc-subtitle"gehört, also danke für den Tipp.Das W3C hat einige Vorschläge: https://www.w3.org/TR/html52/common-idioms-without-dedicated-elements.html#common-idioms-without-dedicated-elements
Jede Kombination von h2/h3 erscheint mir falsch. Wie das W3C sagt: „h1–h6-Elemente dürfen nicht zur Markierung von Unterüberschriften, Untertiteln, alternativen Titeln und Taglines verwendet werden, es sei denn, sie sind als Überschrift für einen neuen Abschnitt oder Unterabschnitt gedacht.“
Für mich fühlt sich ein einzelnes Header-Element richtig an.
<h2><strong>Neues Ding:</strong> Titel des Dings</h2>Es liest sich logisch und man ist nicht auf das Verhalten des Screenreaders angewiesen. Man kann es recht einfach stylen und – wenn man den Doppelpunkt und das Leerzeichen nicht mag, könnte man diese Zeichen barrierefrei ausblenden.
Aber, wie gesagt, das fühlt sich für mich nur richtig an – ich habe keine Beweise, die das untermauern.
Ich sehe kein Problem damit, 2 Überschriften nebeneinander zu haben. Das passiert auch in Dokumenten, also warum sie nicht einfach als 2 Überschriften behandeln, wenn sie das sein sollen?
Weil es ein Untertitel ist, kein Unterüberschrift.
Ich denke, wo das seltsam wäre, ist für die Nutzung von Screenreadern. Screenreader-Benutzer verlassen sich stark auf Überschriften für die Navigation, laut der WebAIM-Umfrageergebnisse jedenfalls. Man kann ein Menü aufrufen und eine Liste davon erhalten, eine auswählen und an diese Stelle auf der Seite springen. Daher wäre es für diesen Benutzer seltsam, zwei Überschriften nebeneinander für einen Abschnitt zu haben.
Persönlich trenne ich lieber „visuell eine Überschrift“ von „funktional eine Überschrift“ und verwende ein p-Tag für die „visuellen“. Wenn der Text wirklich als Teil der Überschrift Sinn ergibt, könnte ich ihn in das Überschriften-Tag verschachteln und ihm sein eigenes, überschreibendes Styling geben.
Hallo! Ich bin neu in der Entwicklung. Solange wir das gewünschte Ergebnis erzielen (und es für alle Benutzer zugänglich machen), spielen die genauen Elemente oder die Art und Weise, wie wir es tun, wirklich eine Rolle?
Ich mag es gar nicht, Überschriften-Tags in diesen Szenarien zu verwenden. Besonders wenn man eine einzelne Komponente erstellt, dann weiß man nicht, in welchem Kontext diese Komponente landen wird. Ein h2 in eine zufällige Dokumentstruktur einzufügen, könnte das Gegenteil von dem sein, was semantisches HTML uns ermöglicht. Wie wäre es stattdessen, beide Elemente in ein
<header>-Tag zu packen? Denn so ist der Header semantisch an sein Elternteil gebunden, während ich das Gefühl habe, dass Überschriften-Tags immer Dokument-Ebene haben, Gedanken dazu?Vielleicht ist das nur spezifisch für dieses Beispiel (d.h. Karte > Kartenüberschriften), aber mein Instinkt ist ein
<h2>für die Hauptüberschrift und eine
für den Untertext. Gelten in diesem Fall beide als Überschriften?
Die Doppelüberschriften-Begegnungen, die ich normalerweise finde, sind in Hero-Bereichen, Artikel-Seiten oder Produkt-Promo-Bereichen. Vielleicht bin ich es nur, aber es sei denn, es gibt ein paar Absätze Text nach dem Überschriften- und Unterüberschriftenbereich, sollte die Unterüberschrift eine
sein, wenn kein Inhalt folgt.
Ich habe das einmal gesehen und war sehr davon überzeugt
Bin gespannt, was Sie dazu sagen?
Das ist ein ständiger Kampf in meinem Unternehmen und es scheint, dass jeder Entwickler es auf seine Weise macht. Ich habe kürzlich versucht, unsere Typografie neu zu strukturieren und eine semantische Hierarchie auf der Grundlage einer einfachen semantischen Struktur von hier aufgebaut: https://www.w3.org/WAI/tutorials/page-structure/headings/
Wir haben ein Token-basiertes Styleguide mit festen Werten für Größe/Zeilenhöhe, so dass es nach einer gründlichen Überprüfung dessen, was auf unserer Website existiert und wo es zu finden ist, ziemlich einfach war, diese Struktur auf fast jede Situation anzuwenden.
Ich weiß nicht, ob es hübsch ist, aber es funktioniert, es macht für Entwickler Sinn (für Designer weniger, zumindest nicht ohne ein tiefes Gespräch) und ist zugänglich.
Die W3C-Regeln zu befolgen ist erfrischend, denn am Ende weiß ich, dass meine Regeln gesichert werden können.
Ich würde die „Unterüberschrift“ in diesen Beispielen überhaupt nicht als Überschrift bezeichnen; es ist eine Beschreibung des Inhalts in diesem Element. Ergo würde ich dafür keinen H-Tag, sondern eher ein P oder ein DIV verwenden. Problem gelöst.
Wenn ich einen echten Untertitel habe, der immer nach dem Titel kommt, verwende ich oft ein SMALL-Tag innerhalb eines H-Tags. Z.B.:
<h1>Frankenstein <small>Der moderne Prometheus</small></h1>Warum Option 1 anbieten? Die Reihenfolge der Überschriften ist falsch, was ein Zugänglichkeitsproblem darstellt. Das ist nicht die „alte“ Technik; es ist einfach schlechte Technik. Es ist schlicht falsch, das so zu machen.
Dann listet dieser Artikel Dinge auf, die schlecht oder veraltet sind. Sie wissen schon, dass Leute zu CSS Tricks kommen und Ihre Ratschläge kopieren und einfügen, ohne viel nachzudenken, oder?
Da sie zusammengehören, denke ich, ist eine Lösung wie Gustavs Kommentar am besten.
Ich habe bei einem kürzlichen Projekt den Pseudo-Element-Weg gewählt.
Eine Unterüberschrift ist Teil einer Überschrift, kommentiert die Überschrift, fügt etwas zur Überschrift hinzu. Also behalten wir alles zusammen
Unterüberschrift
Überschrift
Die Tags haben die Nachricht verlassen und sie wertlos gemacht. Noch ein Versuch ohne erste oder letzte Klammer
Hm, eine interessante Frage, da ich mich das schon oft gefragt habe… Meine Lösung wäre
Und ich würde h3 statt h2 verwenden, da ich h2 für größere Abschnitte reserviere, die Karten wie diese gruppieren könnten. Und höchstwahrscheinlich ist es bereits in einem solchen Abschnitt.
Ich mag es überhaupt nicht, Text in
<div>-Tags zu haben. Vielleicht meine Sache. Ich denke, man sollte Text immer in ein ordnungsgemäßes Text-basiertes Tag packen, wie z.B.oder oder oder
<h3>usw., nicht<div>oder<header>oder<footer>oder ein anderes strukturelles Tag.Behalten Sie diese „Optionen zur Handhabung von ___“-Artikel bei… Unweigerlich stoße ich beim Lesen eines solchen Artikels auf ein Problem, das ich erst kürzlich hatte, und sie bieten immer mindestens eine Option, an die ich nicht gedacht hatte. In diesem Fall habe ich mich für die aus der Reihenfolge fallenden Mehrfachüberschriften mit Klassen entschieden, aber ich werde die Alternativen jetzt noch einmal durchgehen, insbesondere die mit einer einzigen Überschrift, denn Sie haben Recht, Mehrfachüberschriften sind seltsam.
Die ARIA
doc-subtitleRolle ist für EPUB-Dokumente gedacht. Sie hat keine eigene Überschriftenebene, daher gemäß ARIA 1.1 standardmäßig Ebene 2 (dies ist kein JAWS-Fehler). Da es ARIA ist, wird es nur für Screenreader verfügbar gemacht und die Browser/Screenreader-Unterstützung variiert stark.Wenn Ihre Zielgruppe NVDA/Firefox-Benutzer sind, kann
doc-subtitlehilfreich sein. Andernfalls sollten Sie es wahrscheinlich nicht verwenden.ˋ
Supheading.Heading
ˋ das sollte eigentlich so sein :-/
Ich kann die Verwendung des Begriffs „Unterüberschrift“ für den Text über einer Überschrift nicht mit dem Präfix „sub“, das unter bedeutet, in Einklang bringen. Ich verstehe, dass wir uns auf die relative visuelle Hierarchie beziehen, aber es muss einen weniger verwirrenden Begriff geben.
Es gibt viele Informationen im Internet über H1-Überschriften und ich habe unterschiedliche Meinungen von einigen Autoren zu diesem Thema. Ich war mir nicht sicher, was ich mit den Titeln auf meiner Website tun sollte. Nach dem Lesen Ihres Artikels habe ich Antworten auf alle meine Fragen erhalten. Danke!!!
Ich hinterlasse hier nur: http://html5doctor.com/howto-subheadings/
Hier ist ein Thread, der die Verwendung von
<small>diskutiert: https://lists.w3.org/Archives/Public/public-html/2013Apr/thread.html#msg22Ich denke, dieser Artikel muss überarbeitet werden.
Wie andere bereits angemerkt haben, sind Optionen 1 und 2 einfach falsch.
Einige bessere Lösungen hier
https://www.w3.org/TR/2014/REC-html5-20141028/common-idioms.html
Mein Favorit für eine Karte als Beispiel im Artikel ist
Es scheint, als ob Ihre Website Antworten auf jede Frage hat, die ich Google stelle. Vielen Dank dafür.