2017-06-15 10 views
0

Meine Frage basiert wahrscheinlich auf einem schlechten Design. Das kann ich aber nicht ändern und muss damit arbeiten. Dies ist der visuelle Entwurf ich rede, es ist nur ein Teil einer vollständigen Website:HTML5 Artikel Tag: Pre Artikel Inhalt?

Test

Wie Sie einen Titel eines Artikels gibt es mit einem Hintergrundbild sehen können, dann eine Brotkrümel Symbolleiste und schließlich , der Inhalt der Artikel. Wenn die Breadcrumb-Symbolleiste nicht vorhanden wäre, könnten Sie sie einfach in eine <article> einfügen. Aber der Breadcrumb teilt den Artikel in einen "Pre" -Artikel und einen Hauptartikelteil. Die einzige "saubere" HTML5-Methode wäre, den Artikel einschließlich der Kopfzeile mit Hintergrundbild in eine <article> einzubinden und den Breadcrumb in die visuelle Zielposition zu positionieren. Allerdings klassifiziere ich dies als "Hack" und ich suche einen besseren Weg.

Was wäre der bevorzugte Markup für dieses Szenario?

+1

Ihre beste Wette ist wahrscheinlich die Verwendung von

oder
ganz zu vermeiden einfach, und das gesamten HTML-Dokument als das behandeln Artikel. Ja, der Breadcrumb
+0

Wenn dies Teil einer Seite mit potenziell mehreren Artikeln mit eigenen Breadcrumbs ist, die ihre Überschriften und Inhalte trennen, würde ich mich mit der CSS-Problemumgehung begnügen. – BoltClock

+0

Die CSS-Problemumgehung (mit der Breadcrumb außerhalb des Artikels und noch positionieren Sie es in den Artikel mit CSS) ist meine Problemumgehung, bis es eine bessere Lösung gibt – dude

Antwort

2

Es wird keine perfekte Lösung für die aktuelle Anforderung sein.

Wie von Kommentaren auf die vorherige Antwort hingewiesen, ist die nav nicht mit dem Artikel verwandt. Auch

, weist WCAG dass:

1.3.2 Meaningful Sequence: Wenn die Reihenfolge, in der die Inhalte dargestellt wird seine Bedeutung betrifft, eine richtige Lesereihenfolge kann durch Software bestimmt werden. (Stufe A)

EDIT: die Reihenfolge des Elements Wenn ändernden kann eine sinnvolle Sequenz (G57) bewahren, wenn die Elemente nicht mit visuell der DOM Ordnung (see C27) die visuellen Fokusanzeige des Bildschirmlesers entspricht nicht der Standard-Lesereihenfolge, was zu schlechtem UX für Personen mit Sehschwäche führt, die einen Bildschirmleser verwenden.

So ist es unmöglich, einen visuellen CSS-Hack zu versuchen, um die Reihenfolge zwischen den Elementen visuell zu invertieren, ohne eine andere Regel zu brechen.

Sie von einer dritten Technik denken kann:

  • aria-hidden auf dem sichtbaren Titelsatz,
  • Verwendung aria-labelledby auf den article Tag die h1 außerhalb des article Element zu zeigen:

Zum Beispiel:

<header> 
    <h1 aria-hidden="true" id="title">Your title</h1> 
    <nav><!-- nav here --></nav> 
</header> 

<article aria-labelledby="title"> 
    // article here 
</article> 

Ein anderer Weg ist zu tun, um das Titelelement zu duplizieren, ein sichtbaren,

ein für unterstützende Technologie
<header> 
    <div aria-hidden="true">Your title</div> 
    <nav><!-- nav here --></nav> 
</header> 

<article> 
    <h1 class="sr-only">Your title</h1> 
    // article here 
</article> 
+0

Es tut mir leid, aber können Sie das Zitat ausarbeiten ('Wenn die Reihenfolge, in der Inhalte präsentiert werden, ihre Bedeutung beeinflusst, kann eine korrekte Lesesequenz programmgesteuert bestimmt werden. (Level A)')? Ich verstehe die Bedeutung dahinter nicht vollständig. Eine weitere Frage: Ihre Lösung verbirgt die h1 für Bildschirmleser (labelledby nicht die Überschrift Reihenfolge). In meinen Augen wäre dies auch ein schlechter Workaround, da Screenreader nicht mit der Überschrift Shortcuts auf der Tastatur auf die Überschrift zugreifen können ?! – dude

+0

@dude Ich habe meine Antwort bearbeitet, ich könnte für diesen Fall zu affirmativ gewesen sein, da wir davon ausgehen können, dass Ihr Inhalt immer noch sinnvoll ist. Ich fügte eine andere Lösung hinzu, aber das ist immer noch ein Provisorium (ich persönlich hasse die Verwendung dieser "Nur-SR" -Css-Klassen) – Adam

+0

Danke für die Klarstellung. Das Beispiel der Tab-Reihenfolge ist sinnvoll. Ich werde ein paar Tage auf eine andere Antwort warten, wenn es niemanden gibt, werde ich deine Antwort akzeptieren. – dude

0

Es könnte so etwas wie diese -

<article> 
    <header> 
     //APPLY BACKGROUND IMAGE 
     <h1>YOUR TITLE</h1> 
    </header> 

    <nav> 
     //USE BREADCRUMBS HERE 
    </nav> 

    <section> 
     //USE THIS FOR CONTENT 
    </section> 
</article> 
+1

Aber dann würde der Artikel Inhalt (nav) enthalten, die nicht mit dem Artikel – dude

+0

verwandt ist Es gibt kein Problem bei der Platzierung

+3

@RudrakshPathak: Hängt davon ab, was Sie mit "Problem" meinen. Kumpel ist richtig, der Inhalt innerhalb von 'Artikel' muss mit dem Artikel in Beziehung stehen, aber das Brotkrumen 'nav' bezieht sich auf die Seite, nicht speziell auf den Artikel. Ein "nav" -Element innerhalb von "article" würde Sinn machen, wenn es die Navigation * für diesen Artikel * ist (z. B. ein Inhaltsverzeichnis, eine Seitennummerierung usw.). - Man könnte jedoch argumentieren, dass die Brotkrumen eine Art "Kategorie" sind, unter der der Artikel kategorisiert wird, aber dann wäre die Verwendung von "nav" nicht unbedingt sinnvoll. – unor