Wir benötigen Ihr Feedback zu einer vorgeschlagenen Lösung für das Problem der Layoutmethoden, bei denen Elemente in einer Reihenfolge angeordnet werden, die von der Quelle des Dokuments getrennt ist.
Die CSS-Arbeitsgruppe arbeitet an einer Lösung für den Fall, dass Elemente mithilfe einer Layoutmethode in einer Reihenfolge angeordnet werden können, die von der Quelle getrennt ist und daher nicht in der Lese- und Fokusreihenfolge des Dokuments liegt. In diesem Artikel werden das Problem und der Lösungsvorschlag erläutert. Wir freuen uns auf Ihr Feedback.
Das Problem
Die Lesereihenfolge eines HTML-Dokuments entspricht der Reihenfolge der Quelle. Das bedeutet, dass ein Screenreader das Dokument so liest, wie es in der Quelle angeordnet ist, und eine Person, die die Tastatur verwendet, um mit der Tabulatortaste durch das Dokument zu navigieren, folgt ebenfalls dieser Reihenfolge der Quelle. Normalerweise ergibt dies Sinn und eine sinnvolle Quellreihenfolge für das Dokument ist von entscheidender Bedeutung für Präsentationen im Lesemodus von Inhalten, Screenreadern und Geräten mit begrenztem CSS. CSS und insbesondere Flexbox und Raster können jedoch Layouts erstellen, bei denen das Layout eine visuelle Lesereihenfolge definiert, die von der zugrunde liegenden Quelle abweicht.
Wenn Sie beispielsweise die Eigenschaft order
für flexible Elemente verwenden, ändert sich die Layoutreihenfolge, jedoch nicht die Reihenfolge in der Quelle.
Wenn Sie das Rasterlayout verwenden, kann die ausgewählte Layoutmethode die TAB-Reihenfolge durcheinanderbringen, z. B. wenn Sie grid-auto-flow: dense
verwenden, wodurch eine zufällige Layoutreihenfolge der Elemente erstellt wird.
Ein Entwickler kann diese Verbindung auch verursachen, indem er Elemente im Raster in einer anderen Reihenfolge platziert als in der Quelle vorgegeben.
Vorgeschlagene Lösung
Die Arbeitsgruppe des Preisvergleichsportals schlägt eine Lösung für dieses Problem vor. Wir würden uns über Feedback von Entwicklern und der Community für Barrierefreiheit im Internet freuen.
Ich werde mit reading-order: auto
zufällig ausgewählten Layouts folgen
In Situationen, in denen eine zufällige Layoutreihenfolge erstellt wird, z. B. bei Verwendung von dichten Packungen im Rasterlayout, sollte der Browser dem Layout und nicht der Quellreihenfolge folgen. Dies kann passieren, wenn die Flex- oder Rasterelemente das Attribut reading-order
mit dem Wert auto
haben.
Das folgende CSS würde bewirken, dass die Lesereihenfolge der Platzierung von Artikeln folgt, die aufgrund von grid-auto-flow: dense
dicht gepackt wurden.
.cards {
display: grid;
grid-auto-flow: dense;
}
.cards li {
grid-column: auto / span 2;
reading-order: auto;
}
Nicht zufälligen Layouts mit reading-order-items
folgen
In einigen Raster- und Flex-Layouts ist die Layoutreihenfolge einfach zu verstehen. Beispielsweise gibt es in einem flexiblen Layout, bei dem das Attribut order
zum Neuanordnen von Elementen verwendet wird, eine offensichtliche Layoutreihenfolge, die durch das Attribut order
vorgegeben wird. Bei anderen Layouts ist die ideale Layoutreihenfolge weniger klar, es gibt möglicherweise mehr als eine Auswahl. Wenn Sie nicht randomisierte Layouts verwenden, müssen Sie dem Container daher die Eigenschaft grid-order-items
hinzufügen. Geben Sie dabei Keyword-Werte an, die Ihre Absicht für die Layoutreihenfolge erläutern.
Das folgende Beispiel zeigt ein flexibles Layout mit row-reverse
. Die Flex-Elemente haben reading-order: auto
und den Flex-Container reading-order-items: flex flow
, um anzugeben, dass auch die Lesereihenfolge der flex-flow
-Richtung folgen soll, anstatt einer visuellen Reihenfolge (die wir mit flex visual
angeben könnten).
.cards {
display: flex;
flex-flow: row-reverse;
reading-order-items: flex flow;
}
.cards li {
reading-order: auto;
}
In diesem nächsten Beispiel wird mit grid-template-areas
ein Rasterlayout erstellt und die Elemente werden in einer anderen Layoutreihenfolge als die Quellreihenfolge platziert. Mit der Eigenschaft reading-order-items
wird angegeben, dass die Layoutreihenfolge eingehalten werden soll, also jede Zeile durchlaufen soll, bevor zur nächsten gewechselt wird. (grid column
würde die entgegengesetzte Richtung anzeigen.)
.wrapper {
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
grid-template-areas:
"a a b b b b"
"c c d d e e"
"f f g g h h";
reading-order-items: grid rows;
}
.a {
grid-area: a;
reading-order: auto;
}
Spielt die Reihenfolge der Quellen keine Rolle?
Nein, die Reihenfolge der Quellen ist weiterhin wichtig. Diese Funktion sollte nur in bestimmten Situationen verwendet werden, in denen die Lesereihenfolge von der Quelle abweichen kann. Dies ist beispielsweise der Fall, wenn Layoutmethoden, wie z. B. zu viele Raster, oder eine andere Layoutreihenfolge an einem bestimmten Haltepunkt sinnvoll sind.
Wenn Sie diese Eigenschaften verwenden, erstellen Sie ein Quelldokument mit einer Reihenfolge, die sinnvoll wäre, wenn die Seite ohne CSS gerendert würde. Fügen Sie diese Eigenschaften nur an den Stellen und an den Haltepunkten hinzu, für die sie erforderlich sind.
Sollten diese Eigenschaften von Authoring-Tools angewendet werden?
Authoring-Tools, die es Nutzern ermöglichen, durch Ziehen und Ablegen von Elementen ein Rasterlayout zu erstellen, sollten dennoch dazu beitragen, ein sinnvolles Quelldokument zu erstellen. Daher ist es in den meisten Fällen besser geeignet, die Quelle basierend auf der Layoutreihenfolge neu anzuordnen, anstatt diese Eigenschaften zu verwenden, um Unterbrechungen zu vermeiden.
Bitte teilen Sie uns Ihr Feedback zu diesem Vorschlag mit.
Wir freuen uns sehr über Feedback zu diesem Thema. Wenn Sie einen Anwendungsfall haben, der Ihrer Meinung nach dadurch nicht gelöst werden kann, oder wenn Sie Bedenken hinsichtlich der Barrierefreiheit im Hinblick auf diesen Ansatz haben, informieren Sie bitte die Arbeitsgruppe für Preisvergleichsportale.
Es gibt einen laufenden Thread, der viele Anwendungsfälle und Überlegungen zum Ansatz enthält. Dieser Thread ist ein guter Ort, um Kommentare zu hinterlassen und potenzielle Probleme mit diesem Vorschlag hervorzuheben. Der aktuelle Vorschlag unterscheidet sich stark von meinem ursprünglichen Vorschlag, mit dem der Thread begonnen hat. Interessierte Menschen könnten die Gespräche, die zu unserem heutigen Stand geführt haben, interessant finden. Es ist ein gutes Beispiel dafür, wie Vorschläge in der Arbeitsgruppe des Preisvergleichsportals umgesetzt werden, um etwas zu machen, das in Browsern implementiert werden kann.
Miniaturansicht von Patrick Tomasso. Vielen Dank an Chris Harrelson, Tab Atkins und Ian Kilpatrick für Feedback und Rezensionen.