SlideShare ist ein Scribd-Unternehmen logo
1 von 67
WAI-ARIA
(…was ist das denn nun schon wieder?)
W
A
I

A
R
I
A
Web
Accessbility
Initiative

Accessible
Rich
Internet
Applications
„WAI-ARIA, the Accessible Rich Internet
Applications Suite, defines a way to make
Web content and Web applications more
accessible to people with disabilities. It
especially helps with dynamic content and
advanced user interface controls
developed with Ajax, HTML, JavaScript,
and related technologies.“

              http://www.w3.org/WAI/intro/aria.php
Dynamic Content   http://www.flickr.com/photos/nickwheeleroz/2166114756/
Dynamischer Content
Dynamischer Content

Für Screenreader „unsichtbare“ Updates
Dynamischer Content

Für Screenreader „unsichtbare“ Updates

…nur Teile der Seite werden per AJAX
aktualisiert
Dynamischer Content

Für Screenreader „unsichtbare“ Updates

…nur Teile der Seite werden per AJAX
aktualisiert

User werden über Änderungen auf der Seite
nicht informiert
Dynamischer Content

Für Screenreader „unsichtbare“ Updates

…nur Teile der Seite werden per AJAX
aktualisiert

User werden über Änderungen auf der Seite
nicht informiert

AJAX ist in Web-Applikationen aber
mittlerweile Standard, also was tun?
„aria-live“

 <p aria-live="polite">
      Magic happens here!
 </p>

Andere Werte der „aria-live“-Eigenschaft sind
„none“ und „assertive“. Quasi die Priorität,
mit der (AJAX-)Aktualisierungen dem User
mitgeteilt werden.
„aria-live“-Beispiel




         Beispiel von Martin Kliehm (@kliehm)
„aria-live“-Beispiel




         Beispiel von Martin Kliehm (@kliehm)
Advanced UI
  controls
HTML-Formulare




Relativ limitiertes Set an interaktiven Elementen.
…was man eigentlich will:
…was man eigentlich will:




 Tree
…was man eigentlich will:

        Slider




 Tree
…was man eigentlich will:

        Slider
                   Tabs




 Tree
…was man eigentlich will:

         Slider
                   Tabs




         mehr
 Tree   Zustände
…was man eigentlich will:

         Slider
                     Tabs




         mehr      Accordeon
 Tree   Zustände
…was man eigentlich will:

              Slider
                                Tabs




              mehr            Accordeon
 Tree        Zustände


        …und noch einiges mehr :)
…was man gemacht hat:
…was man gemacht hat:


bestehende HTML-Elemente genommen…
…was man gemacht hat:


bestehende HTML-Elemente genommen…

…ihnen per JavaScript „Leben eingehaucht“
…was man gemacht hat:


bestehende HTML-Elemente genommen…

…ihnen per JavaScript „Leben eingehaucht“

…und so andere UI-Controls imitiert
(„Widgets“)
Accessibility-Probleme
Accessibility-Probleme



Die Rolle/Aufgabe ist assistiven
Technologien nicht ersichtlich
Accessibility-Probleme



Die Rolle/Aufgabe ist assistiven
Technologien nicht ersichtlich
Status und Eigenschaften sind assistiven
Technologien nicht zugänglich
Accessibility-Probleme



Die Rolle/Aufgabe ist assistiven
Technologien nicht ersichtlich
Status und Eigenschaften sind assistiven
Technologien nicht zugänglich
Aktualisierungen werden nicht mitgeteilt
Accessibility-Probleme



Die Rolle/Aufgabe ist assistiven
Technologien nicht ersichtlich
Status und Eigenschaften sind assistiven
Technologien nicht zugänglich
Aktualisierungen werden nicht mitgeteilt
Probleme mit Tastaturnavigation
http://www.flickr.com/photos/gemmataylor/2907113624/
WAI-ARIA to the rescue…
Tabindex für alle




http://www.flickr.com/photos/alykat/40078437/
Tabindex für alle

bisher konnten nur




                         http://www.flickr.com/photos/alykat/40078437/
manche HTML-Elemente
per Tastatur den Fokus
bekommen
(„durchtabben“)
Tabindex für alle

bisher konnten nur




                             http://www.flickr.com/photos/alykat/40078437/
manche HTML-Elemente
per Tastatur den Fokus
bekommen
(„durchtabben“)

mit WAI-ARIA wird das
tabindex-Attribut auf alle
sichtbaren Elemente
erweitert
Rollen-Attribute
Rollen-Attribute

ARIA führt das „role“-Attribut ein
Rollen-Attribute

ARIA führt das „role“-Attribut ein

bestehende HTML-Elemente…
Rollen-Attribute

ARIA führt das „role“-Attribut ein

bestehende HTML-Elemente…

…erweitert mit neuen Eigenschaften („Rollen“)
Rollen-Attribute

ARIA führt das „role“-Attribut ein

bestehende HTML-Elemente…

…erweitert mit neuen Eigenschaften („Rollen“)

Verhalten von „Widgets“ wird weiterhin per
JavaScript gesteuert
Slider
Slider


<input type="image"
src="thumb.gif"
alt="Effectiveness"
role="slider"
aria-valuemin="0"
aria-valuemax="100"
aria-valuenow="42"
aria-valuetext="42 percent"
aria-labelledby="leffective">
Slider – Beispiel




           Beispiel von Martin Kliehm (@kliehm)
Slider – Beispiel




           Beispiel von Martin Kliehm (@kliehm)
Tabs
Tabs



<div id="tabpanel_1" class="tabpanel">
       <ul id="tablist_1" role="tablist">
           <li id="tab_1" role="tab" tabindex="0">Crust</li>
           <li id="tab_2" role="tab" tabindex="-1">Veges</li>
           <li id="tab_3" role="tab" tabindex="-1">Carnivore</li>
           <li id="tab_4" role="tab" tabindex="-1">Delivery</li>
         </ul>
       <div id="panel_1" role="tabpanel" aria-labelledby="tab_1"
             aria-hidden="false" style="display: none">…</div>
       <div id="panel_2" role="tabpanel" aria-labelledby="tab_2"
             aria-hidden="true" style="display: none">…</div>
       [...]
</div>
Tabs – Beispiel



          Beispiel von Martin Kliehm (@kliehm)
Tabs – Beispiel



          Beispiel von Martin Kliehm (@kliehm)
Tree
Tree

<div id="tree"role="tree" tabindex="-1" class="tree">
    <span tabindex="0" role="treeitem"
           aria-expanded="true" id="veggie">Veggies</span>
    <div role="group" class="group" id="veggieGroup">
        <span tabindex="-1" role="treeitem"
               aria-expanded="true">Green</span>
        <div role="group" id="greenGroup">
             <span tabindex="-1" role="treeitem"
                    class="treeitem">Asparagus</span>
             <span tabindex="-1" role="treeitem"
                   class="treeitem">Kale</span>
             [...]
        </div>
        [...]
    </div>
    [...]
</div>
Tree – Beispiel




     Beispiel von Martin Kliehm (@kliehm)
Tree – Beispiel




     Beispiel von Martin Kliehm (@kliehm)
Required Fields
Required Fields



<form action="post">
    <label for="firstName">First name:</label>
    <input id="firstName" type="text"
           aria-required="true" /><br/>
    <label for="lastName">Last name:</label>
    <input id="lastName" type="text"
           aria-required="true" /><br/>
    <label for="streetAddress">Street address:</label>
    <input id="streetAddress" type="text" />
</form>
Required – Beispiel




         Beispiel von Martin Kliehm (@kliehm)
Required – Beispiel




         Beispiel von Martin Kliehm (@kliehm)
http://www.flickr.com/photos/tomsen/2899175607/




Document
Landmarks
Dokument-Landmarken
Dokument-Landmarken


fungieren als „Wegweiser“ im Dokument
Dokument-Landmarken


fungieren als „Wegweiser“ im Dokument

beschreiben die „Rollen“ der Sektionen
Dokument-Landmarken


fungieren als „Wegweiser“ im Dokument

beschreiben die „Rollen“ der Sektionen

helfen Nutzern assistiver Technologien die
Struktur eines Dokuments schneller zu
erfassen
Beispiel
Beispiel

  <div role="banner">
  ...
  </div>
  <div role="navigation">
  ...
  </div>
  <div role="main">
  ...
  </div>
Beispiel
Beispiel
Fragen? Fragen!
Danke für die
              Aufmerksamkeit

                                     Stefan Walter
Diese Präsentation steht unter der
                                     stefan@hessendscher.de
Attribution-Share Alike 3.0
                                     twitter.com/hessendscher

Weitere ähnliche Inhalte

Ähnlich wie Einführung in WAI-ARIA

jQueryMobile mit Extbase/Fluid
jQueryMobile mit Extbase/FluidjQueryMobile mit Extbase/Fluid
jQueryMobile mit Extbase/FluidPeter Schuhmann
 
Für Wen, Wie Und Warum - Webstandards im Projektalltag
Für Wen, Wie Und Warum - Webstandards im ProjektalltagFür Wen, Wie Und Warum - Webstandards im Projektalltag
Für Wen, Wie Und Warum - Webstandards im Projektalltagdjesse
 
Dojo Und Notes
Dojo Und NotesDojo Und Notes
Dojo Und Notesdominion
 
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEESchnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEEBenjamin Schmid
 
iDocIt - Ein Assistent zur API-Dokumentation
iDocIt - Ein Assistent zur API-DokumentationiDocIt - Ein Assistent zur API-Dokumentation
iDocIt - Ein Assistent zur API-DokumentationJan Christian Krause
 
Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...
Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...
Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...Timon Hartung
 
Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010Patrick Lauke
 
DB-Schema-Evolution mit LiquiBase
DB-Schema-Evolution mit LiquiBaseDB-Schema-Evolution mit LiquiBase
DB-Schema-Evolution mit LiquiBasegedoplan
 
JSF 2 Kompositkomponenten (JAX 2012)
JSF 2 Kompositkomponenten (JAX 2012)JSF 2 Kompositkomponenten (JAX 2012)
JSF 2 Kompositkomponenten (JAX 2012)Michael Kurz
 
Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010
Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010
Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010Patrick Lauke
 
HTML5 im Überblick - semantisches HTML, Geolocation, Offline-Webanwendungen, ...
HTML5 im Überblick - semantisches HTML, Geolocation, Offline-Webanwendungen, ...HTML5 im Überblick - semantisches HTML, Geolocation, Offline-Webanwendungen, ...
HTML5 im Überblick - semantisches HTML, Geolocation, Offline-Webanwendungen, ...Karionis
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in RailsAngelo Maron
 
Dokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte AkzeptanztestsDokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte AkzeptanztestsSebastian Sanitz
 
Mit jQTouch auf's iPhone & Android
Mit jQTouch auf's iPhone & AndroidMit jQTouch auf's iPhone & Android
Mit jQTouch auf's iPhone & AndroidBjörn Wibben
 
Integration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineIntegration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineOPEN KNOWLEDGE GmbH
 
Aktuelle Webtechnologien - HTML5, CSS3 und mehr
Aktuelle Webtechnologien - HTML5, CSS3 und mehrAktuelle Webtechnologien - HTML5, CSS3 und mehr
Aktuelle Webtechnologien - HTML5, CSS3 und mehrYves Hoppe
 

Ähnlich wie Einführung in WAI-ARIA (20)

HTML5
HTML5HTML5
HTML5
 
ARIA
ARIAARIA
ARIA
 
jQueryMobile mit Extbase/Fluid
jQueryMobile mit Extbase/FluidjQueryMobile mit Extbase/Fluid
jQueryMobile mit Extbase/Fluid
 
Wicket Kurzübersicht
Wicket KurzübersichtWicket Kurzübersicht
Wicket Kurzübersicht
 
Für Wen, Wie Und Warum - Webstandards im Projektalltag
Für Wen, Wie Und Warum - Webstandards im ProjektalltagFür Wen, Wie Und Warum - Webstandards im Projektalltag
Für Wen, Wie Und Warum - Webstandards im Projektalltag
 
Dojo Und Notes
Dojo Und NotesDojo Und Notes
Dojo Und Notes
 
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEESchnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
 
IHK GfI
IHK GfIIHK GfI
IHK GfI
 
iDocIt - Ein Assistent zur API-Dokumentation
iDocIt - Ein Assistent zur API-DokumentationiDocIt - Ein Assistent zur API-Dokumentation
iDocIt - Ein Assistent zur API-Dokumentation
 
Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...
Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...
Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...
 
Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010
 
DB-Schema-Evolution mit LiquiBase
DB-Schema-Evolution mit LiquiBaseDB-Schema-Evolution mit LiquiBase
DB-Schema-Evolution mit LiquiBase
 
JSF 2 Kompositkomponenten (JAX 2012)
JSF 2 Kompositkomponenten (JAX 2012)JSF 2 Kompositkomponenten (JAX 2012)
JSF 2 Kompositkomponenten (JAX 2012)
 
Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010
Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010
Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010
 
HTML5 im Überblick - semantisches HTML, Geolocation, Offline-Webanwendungen, ...
HTML5 im Überblick - semantisches HTML, Geolocation, Offline-Webanwendungen, ...HTML5 im Überblick - semantisches HTML, Geolocation, Offline-Webanwendungen, ...
HTML5 im Überblick - semantisches HTML, Geolocation, Offline-Webanwendungen, ...
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in Rails
 
Dokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte AkzeptanztestsDokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte Akzeptanztests
 
Mit jQTouch auf's iPhone & Android
Mit jQTouch auf's iPhone & AndroidMit jQTouch auf's iPhone & Android
Mit jQTouch auf's iPhone & Android
 
Integration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineIntegration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-Pipeline
 
Aktuelle Webtechnologien - HTML5, CSS3 und mehr
Aktuelle Webtechnologien - HTML5, CSS3 und mehrAktuelle Webtechnologien - HTML5, CSS3 und mehr
Aktuelle Webtechnologien - HTML5, CSS3 und mehr
 

Einführung in WAI-ARIA

Hinweis der Redaktion

  1. - Definition von der W3-Site - abstraktes mit Leben f&amp;#xFC;llen - Aufbau in der Pr&amp;#xE4;sentation: Beispiel aus der ARIA-Spezifikation, Codebeispiel, Beispiel von Screenreadern vorgelesen
  2. - Gegen&amp;#xFC;berstellung: Formular -&gt; Absenden -&gt; Neue Seite mit Ergebnis - Klick auf Link -&gt; Request -&gt; neue Seite - mit AJAX: Interaktion -&gt; &amp;#x201E;stiller&amp;#x201C; Request -&gt; Update eines Bereichs der Seite
  3. - Bsp. Chat-Applikation, Nutzer kann &amp;#xFC;ber Updates informiert werden, ohne dass er das Eingabefeld verl&amp;#xE4;sst (&amp;#x201E;fokussiert&amp;#x201C;) - Stichwort &amp;#x201E;Desktop-like Experience&amp;#x201C;, Komfort von Desktop-Anwendungen ohne st&amp;#xE4;ndiges Neuladen
  4. - Bsp. Chat-Applikation, Nutzer kann &amp;#xFC;ber Updates informiert werden, ohne dass er das Eingabefeld verl&amp;#xE4;sst (&amp;#x201E;fokussiert&amp;#x201C;) - Stichwort &amp;#x201E;Desktop-like Experience&amp;#x201C;, Komfort von Desktop-Anwendungen ohne st&amp;#xE4;ndiges Neuladen
  5. - Bsp. Chat-Applikation, Nutzer kann &amp;#xFC;ber Updates informiert werden, ohne dass er das Eingabefeld verl&amp;#xE4;sst (&amp;#x201E;fokussiert&amp;#x201C;) - Stichwort &amp;#x201E;Desktop-like Experience&amp;#x201C;, Komfort von Desktop-Anwendungen ohne st&amp;#xE4;ndiges Neuladen
  6. - Bsp. Chat-Applikation, Nutzer kann &amp;#xFC;ber Updates informiert werden, ohne dass er das Eingabefeld verl&amp;#xE4;sst (&amp;#x201E;fokussiert&amp;#x201C;) - Stichwort &amp;#x201E;Desktop-like Experience&amp;#x201C;, Komfort von Desktop-Anwendungen ohne st&amp;#xE4;ndiges Neuladen
  7. Gibt noch einige weitere Eigenschaften im Zusammenhang mit Live-Regionen: aria-atomic, aria-busy, aria-relevant
  8. - in HTML4: Links u. Formularelemente (a, area, button, input, object, select und textarea) - in JS-Widgets aber bspw. &lt;img&gt;-Elemente als &amp;#x201E;Ausl&amp;#xF6;ser&amp;#x201C; (Stichwort: Slider) - WAI-ARIA macht nun alle sichtbaren Elemente f&amp;#xFC;r die Tastatur erreichbar
  9. - in HTML4: Links u. Formularelemente (a, area, button, input, object, select und textarea) - in JS-Widgets aber bspw. &lt;img&gt;-Elemente als &amp;#x201E;Ausl&amp;#xF6;ser&amp;#x201C; (Stichwort: Slider) - WAI-ARIA macht nun alle sichtbaren Elemente f&amp;#xFC;r die Tastatur erreichbar
  10. - bisher schon m&amp;#xF6;glich: durch &amp;#xDC;berschriften springen - h&amp;#xF6;rt sich erstmal komisch an, aber entspricht menschlichen Gewohnheiten -&gt; &amp;#x201E;Scannen&amp;#x201C; von Text - jetzt deutlich bessere Granularit&amp;#xE4;t und Information &amp;#xFC;ber Struktur m&amp;#xF6;glich
  11. - bisher schon m&amp;#xF6;glich: durch &amp;#xDC;berschriften springen - h&amp;#xF6;rt sich erstmal komisch an, aber entspricht menschlichen Gewohnheiten -&gt; &amp;#x201E;Scannen&amp;#x201C; von Text - jetzt deutlich bessere Granularit&amp;#xE4;t und Information &amp;#xFC;ber Struktur m&amp;#xF6;glich
  12. - bisher schon m&amp;#xF6;glich: durch &amp;#xDC;berschriften springen - h&amp;#xF6;rt sich erstmal komisch an, aber entspricht menschlichen Gewohnheiten -&gt; &amp;#x201E;Scannen&amp;#x201C; von Text - jetzt deutlich bessere Granularit&amp;#xE4;t und Information &amp;#xFC;ber Struktur m&amp;#xF6;glich
  13. Weitere Rollen: banner, article, complementary, contentinfo, search, &amp;#x2026;
  14. Weitere Rollen: banner, article, complementary, contentinfo, search, &amp;#x2026;