Semantischer Unterschied
Laut HTML 5.2 :
Wenn für ein Element angegeben, gibt [das hidden
Attribut] an, dass das Element noch nicht oder nicht mehr direkt für den aktuellen Status der Seite relevant ist oder dass es verwendet wird, um zu deklarieren, dass Inhalte von anderen Teilen der Seite als wiederverwendet werden sollen im Gegensatz zum direkten Zugriff durch den Benutzer.
Beispiele hierfür sind eine Registerkartenliste, in der einige Bedienfelder nicht angezeigt werden, oder ein Anmeldebildschirm, der nach der Anmeldung eines Benutzers ausgeblendet wird. Ich nenne diese Dinge gerne „zeitlich relevant“, dh sie sind zeitabhängig relevant.
Auf der anderen Seite sagt ARIA 1.1 :
[Der aria-hidden
Status] gibt an, ob ein Element für die Eingabehilfen-API verfügbar ist.
Mit anderen Worten, die Elemente mit aria-hidden="true"
von dem entfernt Zugänglichkeit Baum , der die meisten Hilfstechnologien Ehren und Elementen mit aria-hidden="false"
wird auf jedem Fall auf den Baum ausgesetzt werden. Elemente ohne das aria-hidden
Attribut befinden sich im Status "undefiniert (Standard)". Dies bedeutet, dass Benutzeragenten es basierend auf seinem Rendering für den Baum verfügbar machen sollten. Beispielsweise kann ein Benutzeragent entscheiden, es zu entfernen, wenn seine Textfarbe mit seiner Hintergrundfarbe übereinstimmt.
Vergleichen wir nun die Semantik. Es ist angemessen zu verwenden hidden
, aber nicht aria-hidden
für ein Element , das noch nicht „zeitlich relevant“ ist, aber das könnte in der Zukunft relevant wird (in diesem Fall würden Sie dynamische Skripte verwenden , um die entfernen hidden
Attribut). Im Gegensatz dazu ist es angemessen zu verwenden aria-hidden
, aber nicht hidden
auf ein Element , das immer relevant ist, aber mit dem Sie nicht wollen , dass die Zugänglichkeit API Krempel; Zu diesen Elementen kann „visuelles Flair“ gehören, z. B. Symbole und / oder Bilder, die für den Benutzer nicht unbedingt erforderlich sind.
Effektiver Unterschied
Die Semantik hat vorhersehbare Auswirkungen auf Browser / Benutzeragenten. Der Grund, warum ich einen Unterschied mache, ist, dass das Verhalten von Benutzeragenten empfohlen wird , aber von den Spezifikationen nicht verlangt wird.
Das hidden
Attribut sollte ein Element vor allen Präsentationen verbergen , einschließlich Druckern und Bildschirmleseprogrammen (vorausgesetzt, diese Geräte erfüllen die HTML-Spezifikationen). Wenn Sie ein Element aus dem Eingabehilfenbaum sowie aus visuellen Medien entfernen hidden
möchten, reicht dies aus. Verwenden Sie es jedoch nicht hidden
nur, weil Sie diesen Effekt wünschen. Fragen Sie sich zuerst, ob dies hidden
semantisch korrekt ist (siehe oben). Wenn dies hidden
nicht semantisch korrekt ist, Sie das Element jedoch visuell ausblenden möchten, können Sie andere Techniken wie CSS verwenden.
Elemente mit aria-hidden="true"
sind nicht für den Eingabehilfenbaum verfügbar, sodass Bildschirmleser sie beispielsweise nicht ankündigen. Diese Technik sollte sorgfältig angewendet werden, da sie verschiedenen Benutzern unterschiedliche Erfahrungen bietet: Zugängliche Benutzeragenten werden sie nicht ankündigen / rendern, sie werden jedoch weiterhin auf visuellen Agenten gerendert. Dies kann eine gute Sache sein, wenn es richtig gemacht wird, aber es kann missbraucht werden.
Syntaktischer Unterschied
Schließlich gibt es einen Unterschied in der Syntax zwischen den beiden Attributen.
hidden
ist ein boolesches Attribut , dh wenn das Attribut vorhanden ist, ist es wahr - unabhängig davon, welchen Wert es haben könnte - und wenn das Attribut fehlt, ist es falsch. Für den wahren Fall besteht die beste Vorgehensweise darin, entweder überhaupt keinen Wert ( <div hidden>...</div>
) oder den leeren Zeichenfolgenwert ( <div hidden="">...</div>
) zu verwenden. Ich würde es nicht empfehlen, hidden="true"
da jemand, der Ihren Code liest / aktualisiert, möglicherweise hidden="false"
den gegenteiligen Effekt hat, der einfach falsch ist.
aria-hidden
Im Gegensatz dazu handelt es sich um ein aufgezähltes Attribut , das eine endliche Liste von Werten ermöglicht. Wenn das aria-hidden
Attribut vorhanden ist, muss sein Wert entweder "true"
oder sein "false"
. Wenn Sie den Status "undefiniert (Standard)" möchten, entfernen Sie das Attribut vollständig.
Lesen Sie weiter:
https://github.com/chharvey/chharvey.github.io/wiki/Hidden-Content