Zwei Artikel, die am exakt gleichen Tag veröffentlicht wurden
- Bruce Lawson auf Smashing Magazine: Warum Sie HTML5
<article>anstelle von<section>wählen sollten - Adam Laki auf Pine: Der Unterschied zwischen den Elementen
<section>und<div>
Sie vergleichen leicht unterschiedliche Dinge, aber beide beinhalten das <section>-Element.
Ich finde es ziemlich klar, wann man nach einem <div> greift: Wenn man möchte, dass dieses Element im Wesentlichen bedeutungslos ist. Man verwendet es nur für Styling-Zwecke.
Ich denke immer an RSS, wenn ich an <article> denke: Würde dieser kleine Informationsbrocken als Eintrag sinnvoll sein (was nicht unbedingt der gesamte Inhalt des Artikels sein muss)? Wenn ja, verwenden Sie <article>; wenn nicht, dann nicht.
Bruce hat eine Standardantwort
[…] denken Sie an
<article>nicht nur als Zeitungsartikel oder Blogbeitrag, sondern als Kleidungsstück – eine eigenständige Einheit, die in einem anderen Kontext wiederverwendet werden kann. So ist Ihre Hose ein Artikel, und Sie können sie mit einem anderen Outfit tragen; Ihr Hemd ist ein Artikel und kann mit einer anderen Hose getragen werden; Ihre knielangen Lackleder-Stiletto-Stiefel sind ein Artikel.
Noch wichtiger ist, dass es eine tatsächliche Funktionalität hat. Bruce erwähnt, dass Apple WatchOS es speziell verwendet, um Inhalte auf Seiten zu finden.
Aber <section> ist nebulöser. Früher sollte man sich Abschnitte als Orte vorstellen, an denen die Überschriften <h1>–<h6> zurückgesetzt würden, aber das kam nie zustande, weil es etwas namens „HTML5 Outlining“ erforderte, das von null Browsern unterstützt wird.
Sollen wir <section> überhaupt verwenden? Laut Bruce manchmal! Das Design von Smashing Magazine für Artikel hat eine Zusammenfassung am Anfang des Artikels. Visuell ist das ziemlich klar, aber für Nutzer von Screenreadern weniger. Die Lösung war, die Zusammenfassung in ein Element mit einem aria-label zu verpacken, um dies deutlich zu machen. Aber man sollte aria-label nicht verwenden, es sei denn, dieses Element hat auch eine role. Man könnte einem <div> eine Rolle zuweisen, aber <section> hat bereits eine gute Standardrolle, also
<section aria-label="quick summary">
Summary text
</section>
Adams Artikel (Entschuldigung, Adam) ist in den Punkten sehr vage.
Der Hauptunterschied liegt im Semantischen. Wenn Sie einen Teil Ihrer Website oder Anwendung haben, der seine eigene Logik hat, müssen Sie das
<section>-Tag verwenden, um ihn zu deklarieren…… verwenden Sie
<section>, wenn es logisch korrekt ist, einen Teil Ihrer Website oder App für assistive Technologien lesbar zu machen. Das ist ein ausgezeichneter Ansatz, wenn Sie die Screenreader im Hinterkopf behalten.
Sie erhalten also automatisch ein role="region" für Abschnitte, aber ich bin mir nicht sicher, ob das für Screenreader ohne Label etwas nützt. In einem kurzen Test (Chrome für Desktop mit aktiviertem VoiceOver) war ein <section> ohne aria-label einfach nicht im Bereich „Landmarks“ des Web Rotors vorhanden, aber es erschien, sobald es ein aria-label hatte.
Der Punkt ist: Verwenden Sie nicht einfach <section> und gehen Sie davon aus, dass Sie etwas Gutes für die Barrierefreiheit tun. Sein Zweck ist ziemlich begrenzt und nur nützlich für die Festlegung von Landmarks. Selbst dann helfen Sie nicht viel. Leonie Watson in den Kommentaren
Wenn die Wahl zwischen einer visuell versteckten Überschrift und einem Section-Element mit einem zugänglichen Namen besteht, gibt es ein paar Dinge zu beachten, bevor man entscheidet, welcher Ansatz der richtige ist.
Wenn ein Section-Element einen zugänglichen Namen hat, wird es zu einem navigierbaren Landmark-Element, sodass ein Screenreader-Nutzer die Tastenkombination seines Screenreaders verwenden kann, um von einem zum nächsten zu navigieren – genau wie bei Überschriften.
Laut der aktuellsten WebAIM Screen Reader User Survey bevorzugen jedoch 68 % der Screenreader-Nutzer die Navigation per Überschriften im Vergleich zu 2,9 %, die Landmarks bevorzugen.
Aus strenger Barrierefreiheits-Sicht könnte man die Überschrift wahrscheinlich weglassen, aber aus Usability-Sicht möchte man die Überschrift unbedingt beibehalten – zumindest bis mehr Screenreader-Nutzer eine Präferenz für die Verwendung von Landmarks zur Navigation durch Inhalte äußern.
Das hat meine Augen etwas geöffnet.
Ich arbeite an einigen Ideen, um Ausgliederungsabschnitte in Artikeln zu erstellen und habe standardmäßig section verwendet, um den Inhalt des Ausgliederungsbereichs zu gruppieren. Ich habe immer noch das Gefühl, dass das richtig ist, selbst mit dem Kontext dieses Artikels, aber… ich bin mir nicht sicher.
Ich möchte den Inhalt für Styling und Bedeutung in einem HTML-Element gruppieren, da der Inhalt als eine Einheit funktionieren würde, aber ist
<section>das beste HTML… Ich war mir vorher zu 100 % sicher… jetzt bin ich mir zu 75 % sicher…Was denkt jeder?
Squarespace hat gerade seine Plattform auf Squarespace 7.1 aktualisiert und sein Markup enthält jetzt
<section>s innerhalb eines<article>auf jeder Seite (Beispiel: Schauen Sie sich das Markup auf meiner Website will-myers.com an).Da immer mehr Websites im Internet mit Code von Unternehmen wie Squarespace erstellt werden, welche Verantwortung haben diese Unternehmen, sich an die Standardkonvention für Markup zu halten, anstatt dass die Standardkonvention für Markup das wird, was diese Unternehmen diktieren?
Kein Problem, Chris! Zu Ihrem Punkt: „Verwenden Sie nicht einfach
<section>und gehen Sie davon aus, dass Sie etwas Gutes für die Barrierefreiheit tun. Sein Zweck ist ziemlich begrenzt und nur nützlich für die Festlegung von Landmarks.“ Ich stimme zu; diese Zusammenfassung fehlt in meinem Artikel.<section>ist Ihr letztes Mittel, wenn Sie mit Landmarks arbeiten. Zuerst müssen Sie aussagekräftigere Elemente wie<header>,<footer>,<main>,<aside>,<nav>,<article>platzieren und versuchen, die Lücken mit sections zu füllen, wenn Sie können.Ich habe versucht, nur den Unterschied (oder einen Vergleich) zwischen
<div>und<section>zu zeigen, aber ohne den breiteren Kontext kann es irreführend sein. Denn allein bringt<section>nicht viel.Danke!
Ich habe immer section-Elemente verwendet, um verwandte Inhalte zu gruppieren – z. B. eine Reihe von Artikeln oder verwandte/empfohlene Produkte auf einer E-Commerce-Website. Und ich habe immer eine HTML-Überschrift anstelle von aria-label hinzugefügt.
NVDA unter Windows kündigt dann eine Landmark-Region mit dem Überschriftentext an… sodass ein Benutzer leicht identifizieren kann, was diese spezielle Landmark ist.
Ich bin verwirrt durch Bruces Artikel und die Kommentare, ob meine Verwendung korrekt oder sogar hilfreich für Screenreader-Nutzer ist?
Ich mache dasselbe mit
<section>. Wenn unmittelbar nach dem Tag keine Überschrift steht, verwende icharia-labeloderaria-labelledby.Das ist meiner Meinung nach besser, als
<div role="region" aria-label="....." ..... >für Abschnittsinhalte zu verwenden.Spezifikationen können verwirrend sein, und wenn man über Barrierefreiheit spricht, ist das wie 2x verwirrend.