SlideShare a Scribd company logo
1 of 80
Download to read offline
Why ARIA?
              or
Why should I bother to make my
     website accessible?


          Aaron Gustafson
We are creating
 richer online
 experiences
...and the barriers
which prohibit them.
                       photo by drcorneilus
Accessibility is crucial




       Aaron Gustafson




                           photo by TimothyJ
Google is a voracious consumer
  of the web. And it’s blind.




                             photo by Ed Yourdon
But accessibility
isn’t only about
   supporting
 screen readers.
What if you can’t use a mouse?




                             photo by lastquest
What if you don’t see a change?
                             photo by placenamehere
We can and must build better.




                                photo by Guillermo
Why ARIA?!                                         DevChatt - March 2010




Building better
                        Semantics (markup) convey the
                        underlying meaning of
                        the content...
                        but if poorly applied, meaning can
                        be obscured.




              (x)HTML
Why ARIA?!                                          DevChatt - March 2010




Building better
                        CSS can enhance usability through
                        visual clues...
                        but it can also reduce accessibility
                        if misused.



               CSS

              (x)HTML
Why ARIA?!                                         DevChatt - March 2010




Building better
                        JavaScript can be used to build
                        more intuitive interfaces...
                        but it cannot be relied on 100% of
                        the time.

                JS

               CSS

              (x)HTML
Why ARIA?!                                           DevChatt - March 2010




Building better
                        WAI-ARIA extends the semantics
                        of the document to provide
                        additional insight into the state of
               ARIA     the interface and how to interact
                        with it.
                JS

               CSS

              (x)HTML
Why ARIA?!                                                        DevChatt - March 2010




Progressive Enhancement




                        User Experience
               ARIA

                JS
                                    BASIC                            ADVANCED

               CSS                          Browser Capabilities


              (x)HTML
WAI-ARIA is a new(ish) tool




                              photo by Saffanna
Semantics+
Map OS concepts to the web

                             photo by steve-uk
Why ARIA?!          DevChatt - March 2010




             HTML
Why ARIA?!                                   DevChatt - March 2010




               http://tinyurl.com/cwyvny
             http://habilis.net/validator-sac/
Call attention to important pieces
                               photo by Verity Cridland
Why ARIA?!                        DevChatt - March 2010




Structural Roles
                   role="banner"
Why ARIA?!                      DevChatt - March 2010




Structural Roles




                   role="main"
Why ARIA?!                      DevChatt - March 2010




Structural Roles
                   role="navigation"
Why ARIA?!                         DevChatt - March 2010




Structural Roles



                   role="article"
Why ARIA?!                                DevChatt - March 2010




Structural Roles




                   role="list"
                   (but hopefully you used a ul or ol)
Why ARIA?!                      DevChatt - March 2010




Structural Roles
                   role="form"
Why ARIA?!                      DevChatt - March 2010




Structural Roles




                   role="complementary"
Why ARIA?!                      DevChatt - March 2010




Structural Roles




                   role="contentinfo"
Why ARIA?!                      DevChatt - March 2010




Structural Roles




                   role="list"
Why ARIA?!                      DevChatt - March 2010




Structural Roles




                   role="listitem"
Why ARIA?!                                    DevChatt - March 2010




Structural Roles
Document Structure
article              heading       presentation
columnheader         img           region
definition           list          row
directory            listitem      rowheader
document             math          separator
group                note

Landmarks
application          contentinfo   navigation
banner               form          search
complementary        main
Explain what something is
     & how it works




                            photo by DavePress
Why ARIA?!                                      DevChatt - March 2010




Widget Roles
<span role="button">OK</span>
(of course <button>OK</button> would be better)

<div role="alert">
  <p>Something went wrong.</p>
</div>

<div role="alertdialog">
  <p>Something went wrong.</p>
  <img src="x.png" alt="dismiss"
       role="button" />
</div>
Why ARIA?!                                         DevChatt - March 2010




Widget Roles
alert                marquee            slider
alertdialog          menuitem           spinbutton
button               menuitemcheckbox   status
checkbox             menuitemradio      tab
combobox             option             tabpanel
dialog               progressbar        textbox
gridcell             radio              timer
link                 radiogroup         tooltip
log                  scrollbar          treeitem

Widget Container Roles
grid                 menubar            tree
listbox              tablist            treegrid
menu                 toolbar
Why ARIA?!                                   DevChatt - March 2010




Widget Properties
aria-activedescendant   aria-multiline
aria-atomic             aria-multiselectable
aria-autocomplete       aria-orientation
aria-controls           aria-owns
aria-describedby        aria-posinset
aria-dropeffect         aria-readonly
aria-flowto             aria-relevant
aria-haspopup           aria-required
aria-label              aria-setsize
aria-labelledby         aria-sort
aria-level              aria-valuemax
aria-live               aria-valuemin
Indicate what’s going on




                           photo by exfordy
Why ARIA?!                               DevChatt - March 2010




Widget States

                   B       B
                   (off)   (on)



<button>
  <img src="bold-off.png" alt="bold" />
</button>


<button>
  <img src="bold-on.png" alt="bold" />
</button>
Why ARIA?!                               DevChatt - March 2010




Widget States

                   B       B
                   (off)   (on)



<button>
  <img src="bold-off.png" alt="not bold" />
</button>


<button>
  <img src="bold-on.png" alt="bold" />
</button>
Why ARIA?!                                  DevChatt - March 2010




Widget States

                   B       B
                   (off)   (on)



<button role="button" aria-pressed="false">
  <img src="bold-off.png" alt="not bold" />
</button>


<button role="button" aria-pressed="true">
  <img src="bold-on.png" alt="bold" />
</button>
Why ARIA?!                        DevChatt - March 2010




Complex Widgets

              role="application"
Why ARIA?!                                    DevChatt - March 2010




Complex Widgets




              role="slider"
              aria-labelledby="label_handle_valueA"
              aria-valuemin="0"
              aria-valuemax="71"
              aria-valuenow="22"
              aria-valuetext="Apr 04"
Why ARIA?!                         DevChatt - March 2010




Complex Widgets




              role="presentation"
Why ARIA?!                                         DevChatt - March 2010




Widget States
aria-busy
aria-checked
aria-disabled
aria-expanded
aria-grabbed
aria-hidden
aria-invalid
aria-pressed
aria-selected
aria-valuenow (the W3C defines this as a “property”)
aria-valuetext (ditto)
Highlight “living” content
                             photo by kevin1024
Why ARIA?!                               DevChatt - March 2010




Live Regions



<span id="chars_left_notice" class="numeric">
  <strong id="status-field-char-counter"
          class="char-counter">140</strong>
</span>
Why ARIA?!                               DevChatt - March 2010




Live Regions



<span id="chars_left_notice" class="numeric"
      aria-live="polite">
  <strong id="status-field-char-counter"
          class="char-counter">140</strong>
</span>
Why ARIA?!                               DevChatt - March 2010




Live Regions



<span id="chars_left_notice" class="numeric"
      aria-live="polite">
  <strong id="status-field-char-counter"
          class="char-counter">140</strong>
  characters left
</span>
Why ARIA?!                                                  DevChatt - March 2010




Notification Options
off
change not announced

polite
change announced after user completes her current activity

assertive
user agent should interrupt the user’s activity, but not immediately

rude
user agent should interrupt the user’s activity immediately
Manage focus with slight-of-hand




                              photo by cfpg
Why ARIA?!                               DevChatt - March 2010




tabindex helps manage focus
<div tabindex="0">
  <p>This <code>div</code> can now receive focus
using a keyboard’s <kbd>tab</kbd> key. How cool
is that?</p>
</div>
<div tabindex="-1">
  <p>This <code>div</code> won’t be focused by a
user via the <kbd>tab</kbd> key, but JavaScript
can <code>focus()</code> it. Nifty, huh?</p>
</div>
Piecing it all together
                          photo by Richard Jones
Why ARIA?!                DevChatt - March 2010




Let’s Build a Tabbed Interface
Why ARIA?!                                         DevChatt - March 2010




Traditional approach
<h1>Pumpkin Pie</h1>
<div class="container">
  <div class="section">
    <h2>Overview</h2>
    <img src="pie.jpg" alt="">
    <p>Whether you're hosting a festive party or a casual
    get-together with friends, our Pumpkin Pie will make
    entertaining easy!</p>
    ...
  </div>
  ...
  <ul class="tabs">
    <li><a href="#">Overview</a></li>
    <li><a href="#">Ingredients</a></li>
    <li><a href="#">Directions</a></li>
    <li><a href="#">Nutrition</a></li>
  </ul>
</div>
Why ARIA?!                 DevChatt - March 2010




Static HTML with no style
Why ARIA?!           DevChatt - March 2010




A little typography
Why ARIA?!            DevChatt - March 2010




Typography and color
Why ARIA?!           DevChatt - March 2010




Taking another look
Why ARIA?!             DevChatt - March 2010




Taking another look




              .tabbed
Why ARIA?!                                         DevChatt - March 2010




Required source
<h1>Pumpkin Pie</h1>
<div class="tabbed">
  <h2>Overview</h2>
  <img src="pie.jpg" alt="" />
  <p>Whether you're hosting a festive party or a casual
  get-together with friends, our Pumpkin Pie will make
  entertaining easy!</p>
  ...
  <h2>Ingredients</h2>
  <ul>
    <li>1 (9<abbr title="inch">in</abbr>) unbaked deep
        dish pie crust</li>
    <li>½ cup white sugar</li>
    ...
  </ul>
  <h2>Directions</h2>
  ...
</div>
Why ARIA?!                                      DevChatt - March 2010




Understanding the flow



                 Split the
              content & make         Page
                some tabs




                                     JS?
                               Yes          No
Why ARIA?!               DevChatt - March 2010




Mouse-based interaction
Why ARIA?!                                      DevChatt - March 2010




Assigning ARIA Roles




              role="application"
              aria-activedescendant="folder-1"
Why ARIA?!                                    DevChatt - March 2010




Assigning ARIA Roles




              role="tabpanel"
              aria-hidden="false"
              aria-labelledby="folder-1-tab"
Why ARIA?!                    DevChatt - March 2010




Assigning ARIA Roles
              role="tablist"
Why ARIA?!                                 DevChatt - March 2010




Assigning ARIA Roles
              role="tab"
              aria-selected="false"
              aria-describedby="folder-4"
Why ARIA?!                        DevChatt - March 2010




Assigning ARIA Roles
     role="tab"
     aria-selected="true"
     aria-describedby="folder-1"
Why ARIA?!                                         DevChatt - March 2010




Updating states and properties
tab.onclick    = swap;

// ...

function swap( e ){
  // ...
  old_tab.setAttribute( 'aria-selected', 'false' );
  // ...
  tab.setAttribute( 'aria-selected', 'true' );
  // ...
  old_folder.setAttribute( 'aria-hidden', 'true' );
  // ...
  new_folder.setAttribute( 'aria-hidden', 'false' );
  // ...
  _cabinet.setAttribute( 'aria-activedescendant', _active );
}
Why ARIA?!                 DevChatt - March 2010




Enabling the keyboard
tab.onclick   = swap;
tab.onkeydown = moveFocus;
tab.onfocus   = swap;
Why ARIA?!                  DevChatt - March 2010




Enabling the keyboard
              tabindex="0"
Why ARIA?!                   DevChatt - March 2010




Enabling the keyboard
              tabindex="-1"
Why ARIA?!                          DevChatt - March 2010




Enabling the keyboard
function moveFocus( e ) {
  e = ( e ) ? e : event;
  var tab = e.target || e.srcElement,
      key = e.keyCode || e.charCode,
      pass = true;
      tab = getTab( tab );

    // keyboard handling goes here

    if ( ! pass )
    {
      return cancel( e );
    }
}
Why ARIA?!                                     DevChatt - March 2010




Enabling the keyboard
function getTab( tab )
{
  while ( tab.nodeName.toLowerCase() != 'li' )
  {
    tab = tab.parentNode;
  }
  return tab;
}
Why ARIA?!                                        DevChatt - March 2010




Enabling the keyboard
function moveFocus( e ) {
  // ...
  switch ( key ) {
    case 37: // left arrow
    case 38: // up arrow
      move( tab, 'previous', false );
      pass = false;
      break;
    // down (39), right (40), home (36), end (35)
    // should be added here
    case 27: // escape
      tab.blur();
      pass = false;
      break;
  }
  // ...
}
Why ARIA?!                                         DevChatt - March 2010




Enabling the keyboard
function move( tab, direction, complete ) {
  if ( complete ) {
    if ( direction == 'previous' ) {
      tab.parentNode.childNodes[0].focus();
    } else {
      tab.parentNode
         .childNodes[tab.parentNode
                        .childNodes.length-1].focus();
    }
  } else {
    var target = direction == 'previous' ? tab.previousSibling
                                         : tab.nextSibling;
    if ( target ) {
      target.focus();
    }
  }
}
Why ARIA?!                                           DevChatt - March 2010




Enabling the keyboard
function swap( e ){
  // ...
  old_tab.setAttribute( 'aria-selected', 'false' );
  old_tab.setAttribute( 'tabindex', '-1' );
  // ...
  tab.setAttribute( 'aria-selected', 'true' );
  tab.setAttribute( 'tabindex', '0' );
  // ...
  old_folder.setAttribute( 'aria-hidden', 'true' );
  old_folder.setAttribute( 'tabindex', '-1' );
  // ...
  new_folder.setAttribute( 'aria-hidden', 'false' );
  new_folder.setAttribute( 'tabindex', '0' );
  // ...
}
Why ARIA?!                    DevChatt - March 2010




The Fruit (Pie) of Our Labor
Why ARIA?!            DevChatt - March 2010




Who is Supporting WAI-ARIA?
Why ARIA?!                                                  DevChatt - March 2010




For More
WAI-ARIA Spec
w3.org/TR/wai-aria/


WAI-ARIA Support in Browsers
paciellogroup.com/blog/aria-tests/ARIA-SafariaOperaIEFF.html


TabInterface
easy-designs.github.com/tabinterface.js/
Why ARIA?!                                                                 DevChatt - March 2010




                          Slides available at
               http://slideshare.net/AaronGustafson

                  This presentation is licensed under
                          Creative Commons
             Attribution-Noncommercial-Share Alike 3.0

                           flickr Photo Credits
                            “ferris wheel? not yet...” by drcorneilus
                                “Hunter Museum” by TimothyJ
                      “No, I don't need any help - I'm…” by Ed Yourdon
                              “The almighty mouse” by lastquest
                        “wii browser - zoomed in” by placenamehere
                                  “Legospective” by Guillermо
                  “I love my toolbox 15 July Scavenger Hunt” by Saffanna
                            “Dual Samsung Monitors” by steve-uk
                 “Keystone of the Monumental Arch,…” by Verity Cridland
                                      “Lego” by DavePress
                               “iFlickr touch screen” by exfordy
                                  “Green Plant” by kevin1024
                                         “Cartas” by cfpg
                          “Lego Millenium Falcon” by Richard Jones

More Related Content

Viewers also liked

WAI-ARIA is More Than Accessibility
WAI-ARIA is More Than AccessibilityWAI-ARIA is More Than Accessibility
WAI-ARIA is More Than Accessibility偉格 高
 
ADA compliance visuals 2
ADA compliance visuals 2ADA compliance visuals 2
ADA compliance visuals 2Barbara DeBord
 
ADA compliance visuals 1
ADA compliance visuals 1ADA compliance visuals 1
ADA compliance visuals 1Barbara DeBord
 
ADA compliance visuals W3C
ADA compliance visuals W3CADA compliance visuals W3C
ADA compliance visuals W3CBarbara DeBord
 
Entrepreneurship In The News
Entrepreneurship In The NewsEntrepreneurship In The News
Entrepreneurship In The NewsChad Blenkin
 
Introduction to ARIA
Introduction to ARIAIntroduction to ARIA
Introduction to ARIAVinod Tiwari
 
Ada Compliance What It Is And Why You Should Care
Ada Compliance   What It Is And Why You Should CareAda Compliance   What It Is And Why You Should Care
Ada Compliance What It Is And Why You Should CareEzio E Magarotto
 

Viewers also liked (8)

WAI-ARIA is More Than Accessibility
WAI-ARIA is More Than AccessibilityWAI-ARIA is More Than Accessibility
WAI-ARIA is More Than Accessibility
 
ADA compliance visuals 2
ADA compliance visuals 2ADA compliance visuals 2
ADA compliance visuals 2
 
ADA compliance visuals 1
ADA compliance visuals 1ADA compliance visuals 1
ADA compliance visuals 1
 
ADA compliance visuals W3C
ADA compliance visuals W3CADA compliance visuals W3C
ADA compliance visuals W3C
 
Entrepreneurship In The News
Entrepreneurship In The NewsEntrepreneurship In The News
Entrepreneurship In The News
 
2016-10-05 New FLSA Overtime Changes
2016-10-05 New FLSA Overtime Changes2016-10-05 New FLSA Overtime Changes
2016-10-05 New FLSA Overtime Changes
 
Introduction to ARIA
Introduction to ARIAIntroduction to ARIA
Introduction to ARIA
 
Ada Compliance What It Is And Why You Should Care
Ada Compliance   What It Is And Why You Should CareAda Compliance   What It Is And Why You Should Care
Ada Compliance What It Is And Why You Should Care
 

Similar to Why ARIA? [DevChatt 2010]

Dynamic and accessible web content with WAI-ARIA
Dynamic and accessible web content with WAI-ARIADynamic and accessible web content with WAI-ARIA
Dynamic and accessible web content with WAI-ARIAAccess iQ
 
An Introduction to WAI-ARIA
An Introduction to WAI-ARIAAn Introduction to WAI-ARIA
An Introduction to WAI-ARIAIWMW
 
Web Accessibility - We're All In This Together!
Web Accessibility - We're All In This Together!Web Accessibility - We're All In This Together!
Web Accessibility - We're All In This Together!Andrew Ronksley
 
WAI-ARIA An introduction to Accessible Rich Internet Applications / AccessU 2018
WAI-ARIA An introduction to Accessible Rich Internet Applications / AccessU 2018WAI-ARIA An introduction to Accessible Rich Internet Applications / AccessU 2018
WAI-ARIA An introduction to Accessible Rich Internet Applications / AccessU 2018Patrick Lauke
 
DataOps for the Modern Data Warehouse on Microsoft Azure @ NDCOslo 2020 - Lac...
DataOps for the Modern Data Warehouse on Microsoft Azure @ NDCOslo 2020 - Lac...DataOps for the Modern Data Warehouse on Microsoft Azure @ NDCOslo 2020 - Lac...
DataOps for the Modern Data Warehouse on Microsoft Azure @ NDCOslo 2020 - Lac...Lace Lofranco
 
How HTML5 and WAI-ARIA Can Improve Virtual Space of Universities
How HTML5 and WAI-ARIA Can Improve Virtual Space of UniversitiesHow HTML5 and WAI-ARIA Can Improve Virtual Space of Universities
How HTML5 and WAI-ARIA Can Improve Virtual Space of UniversitiesRadek Pavlíček
 
Creating dynamic and accessible content in Drupal 7 using WAI-ARIA
Creating dynamic and accessible content in Drupal 7 using WAI-ARIACreating dynamic and accessible content in Drupal 7 using WAI-ARIA
Creating dynamic and accessible content in Drupal 7 using WAI-ARIAAccess iQ
 
Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]Aaron Gustafson
 
ARIA: A bridge to greater accessibility
ARIA: A bridge to greater accessibilityARIA: A bridge to greater accessibility
ARIA: A bridge to greater accessibilityRachel Cherry
 
Unobtrusive javascript with jQuery
Unobtrusive javascript with jQueryUnobtrusive javascript with jQuery
Unobtrusive javascript with jQueryAngel Ruiz
 
Making JavaScript Accessible
Making JavaScript AccessibleMaking JavaScript Accessible
Making JavaScript AccessibleDennis Lembree
 
An Intro to Angular 2
An Intro to Angular 2An Intro to Angular 2
An Intro to Angular 2Ron Heft
 
Testing For Web Accessibility
Testing For Web AccessibilityTesting For Web Accessibility
Testing For Web AccessibilityHagai Asaban
 
HTML5 & WAI ARIA for online banking
HTML5 & WAI ARIA for online bankingHTML5 & WAI ARIA for online banking
HTML5 & WAI ARIA for online bankingAdesis Netlife
 
London React April- r3t & a11y : This is for everyone , Shaun Dunne.
London React April-  r3t & a11y : This is for everyone , Shaun Dunne.London React April-  r3t & a11y : This is for everyone , Shaun Dunne.
London React April- r3t & a11y : This is for everyone , Shaun Dunne.React London Community
 
SMART DESIGN - icon fonts, svg, and the mobile influence
SMART DESIGN - icon fonts, svg, and the mobile influenceSMART DESIGN - icon fonts, svg, and the mobile influence
SMART DESIGN - icon fonts, svg, and the mobile influenceSara Cannon
 
Miha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web RuntimeMiha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web RuntimeNokiaAppForum
 

Similar to Why ARIA? [DevChatt 2010] (20)

Dynamic and accessible web content with WAI-ARIA
Dynamic and accessible web content with WAI-ARIADynamic and accessible web content with WAI-ARIA
Dynamic and accessible web content with WAI-ARIA
 
An Introduction to WAI-ARIA
An Introduction to WAI-ARIAAn Introduction to WAI-ARIA
An Introduction to WAI-ARIA
 
Web Accessibility - We're All In This Together!
Web Accessibility - We're All In This Together!Web Accessibility - We're All In This Together!
Web Accessibility - We're All In This Together!
 
WAI-ARIA An introduction to Accessible Rich Internet Applications / AccessU 2018
WAI-ARIA An introduction to Accessible Rich Internet Applications / AccessU 2018WAI-ARIA An introduction to Accessible Rich Internet Applications / AccessU 2018
WAI-ARIA An introduction to Accessible Rich Internet Applications / AccessU 2018
 
HTML5 Accessibility
HTML5 AccessibilityHTML5 Accessibility
HTML5 Accessibility
 
DataOps for the Modern Data Warehouse on Microsoft Azure @ NDCOslo 2020 - Lac...
DataOps for the Modern Data Warehouse on Microsoft Azure @ NDCOslo 2020 - Lac...DataOps for the Modern Data Warehouse on Microsoft Azure @ NDCOslo 2020 - Lac...
DataOps for the Modern Data Warehouse on Microsoft Azure @ NDCOslo 2020 - Lac...
 
How HTML5 and WAI-ARIA Can Improve Virtual Space of Universities
How HTML5 and WAI-ARIA Can Improve Virtual Space of UniversitiesHow HTML5 and WAI-ARIA Can Improve Virtual Space of Universities
How HTML5 and WAI-ARIA Can Improve Virtual Space of Universities
 
WAI-ARIA
WAI-ARIAWAI-ARIA
WAI-ARIA
 
Creating dynamic and accessible content in Drupal 7 using WAI-ARIA
Creating dynamic and accessible content in Drupal 7 using WAI-ARIACreating dynamic and accessible content in Drupal 7 using WAI-ARIA
Creating dynamic and accessible content in Drupal 7 using WAI-ARIA
 
Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
 
ARIA: A bridge to greater accessibility
ARIA: A bridge to greater accessibilityARIA: A bridge to greater accessibility
ARIA: A bridge to greater accessibility
 
Unobtrusive javascript with jQuery
Unobtrusive javascript with jQueryUnobtrusive javascript with jQuery
Unobtrusive javascript with jQuery
 
Making JavaScript Accessible
Making JavaScript AccessibleMaking JavaScript Accessible
Making JavaScript Accessible
 
An Intro to Angular 2
An Intro to Angular 2An Intro to Angular 2
An Intro to Angular 2
 
Testing For Web Accessibility
Testing For Web AccessibilityTesting For Web Accessibility
Testing For Web Accessibility
 
HTML5 & WAI ARIA for online banking
HTML5 & WAI ARIA for online bankingHTML5 & WAI ARIA for online banking
HTML5 & WAI ARIA for online banking
 
London React April- r3t & a11y : This is for everyone , Shaun Dunne.
London React April-  r3t & a11y : This is for everyone , Shaun Dunne.London React April-  r3t & a11y : This is for everyone , Shaun Dunne.
London React April- r3t & a11y : This is for everyone , Shaun Dunne.
 
SMART DESIGN - icon fonts, svg, and the mobile influence
SMART DESIGN - icon fonts, svg, and the mobile influenceSMART DESIGN - icon fonts, svg, and the mobile influence
SMART DESIGN - icon fonts, svg, and the mobile influence
 
Miha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web RuntimeMiha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web Runtime
 
ARIA Gone Wild
ARIA Gone WildARIA Gone Wild
ARIA Gone Wild
 

More from Aaron Gustafson

Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]Aaron Gustafson
 
Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]Aaron Gustafson
 
Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]Aaron Gustafson
 
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]Aaron Gustafson
 
Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?Aaron Gustafson
 
Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]Aaron Gustafson
 
Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]Aaron Gustafson
 
Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]Aaron Gustafson
 
Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]Aaron Gustafson
 
PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]Aaron Gustafson
 
Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]Aaron Gustafson
 
Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]Aaron Gustafson
 
Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Aaron Gustafson
 
The Web Should Just Work for Everyone
The Web Should Just Work for EveryoneThe Web Should Just Work for Everyone
The Web Should Just Work for EveryoneAaron Gustafson
 
Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]Aaron Gustafson
 
Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]Aaron Gustafson
 
Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2Aaron Gustafson
 
Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1Aaron Gustafson
 
Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]Aaron Gustafson
 
Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]Aaron Gustafson
 

More from Aaron Gustafson (20)

Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]
 
Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]
 
Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]
 
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
 
Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?
 
Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]
 
Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]
 
Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]
 
Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]
 
PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]
 
Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]
 
Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]
 
Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]
 
The Web Should Just Work for Everyone
The Web Should Just Work for EveryoneThe Web Should Just Work for Everyone
The Web Should Just Work for Everyone
 
Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]
 
Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]
 
Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2
 
Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1
 
Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]
 
Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]
 

Recently uploaded

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

Recently uploaded (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

Why ARIA? [DevChatt 2010]

  • 1. Why ARIA? or Why should I bother to make my website accessible? Aaron Gustafson
  • 2. We are creating richer online experiences
  • 3.
  • 4. ...and the barriers which prohibit them. photo by drcorneilus
  • 5. Accessibility is crucial Aaron Gustafson photo by TimothyJ
  • 6. Google is a voracious consumer of the web. And it’s blind. photo by Ed Yourdon
  • 7. But accessibility isn’t only about supporting screen readers.
  • 8. What if you can’t use a mouse? photo by lastquest
  • 9. What if you don’t see a change? photo by placenamehere
  • 10. We can and must build better. photo by Guillermo
  • 11. Why ARIA?! DevChatt - March 2010 Building better Semantics (markup) convey the underlying meaning of the content... but if poorly applied, meaning can be obscured. (x)HTML
  • 12. Why ARIA?! DevChatt - March 2010 Building better CSS can enhance usability through visual clues... but it can also reduce accessibility if misused. CSS (x)HTML
  • 13. Why ARIA?! DevChatt - March 2010 Building better JavaScript can be used to build more intuitive interfaces... but it cannot be relied on 100% of the time. JS CSS (x)HTML
  • 14. Why ARIA?! DevChatt - March 2010 Building better WAI-ARIA extends the semantics of the document to provide additional insight into the state of ARIA the interface and how to interact with it. JS CSS (x)HTML
  • 15. Why ARIA?! DevChatt - March 2010 Progressive Enhancement User Experience ARIA JS BASIC ADVANCED CSS Browser Capabilities (x)HTML
  • 16. WAI-ARIA is a new(ish) tool photo by Saffanna
  • 18. Map OS concepts to the web photo by steve-uk
  • 19. Why ARIA?! DevChatt - March 2010 HTML
  • 20. Why ARIA?! DevChatt - March 2010 http://tinyurl.com/cwyvny http://habilis.net/validator-sac/
  • 21. Call attention to important pieces photo by Verity Cridland
  • 22. Why ARIA?! DevChatt - March 2010 Structural Roles role="banner"
  • 23. Why ARIA?! DevChatt - March 2010 Structural Roles role="main"
  • 24. Why ARIA?! DevChatt - March 2010 Structural Roles role="navigation"
  • 25. Why ARIA?! DevChatt - March 2010 Structural Roles role="article"
  • 26. Why ARIA?! DevChatt - March 2010 Structural Roles role="list" (but hopefully you used a ul or ol)
  • 27. Why ARIA?! DevChatt - March 2010 Structural Roles role="form"
  • 28. Why ARIA?! DevChatt - March 2010 Structural Roles role="complementary"
  • 29. Why ARIA?! DevChatt - March 2010 Structural Roles role="contentinfo"
  • 30. Why ARIA?! DevChatt - March 2010 Structural Roles role="list"
  • 31. Why ARIA?! DevChatt - March 2010 Structural Roles role="listitem"
  • 32. Why ARIA?! DevChatt - March 2010 Structural Roles Document Structure article heading presentation columnheader img region definition list row directory listitem rowheader document math separator group note Landmarks application contentinfo navigation banner form search complementary main
  • 33. Explain what something is & how it works photo by DavePress
  • 34. Why ARIA?! DevChatt - March 2010 Widget Roles <span role="button">OK</span> (of course <button>OK</button> would be better) <div role="alert"> <p>Something went wrong.</p> </div> <div role="alertdialog"> <p>Something went wrong.</p> <img src="x.png" alt="dismiss" role="button" /> </div>
  • 35. Why ARIA?! DevChatt - March 2010 Widget Roles alert marquee slider alertdialog menuitem spinbutton button menuitemcheckbox status checkbox menuitemradio tab combobox option tabpanel dialog progressbar textbox gridcell radio timer link radiogroup tooltip log scrollbar treeitem Widget Container Roles grid menubar tree listbox tablist treegrid menu toolbar
  • 36. Why ARIA?! DevChatt - March 2010 Widget Properties aria-activedescendant aria-multiline aria-atomic aria-multiselectable aria-autocomplete aria-orientation aria-controls aria-owns aria-describedby aria-posinset aria-dropeffect aria-readonly aria-flowto aria-relevant aria-haspopup aria-required aria-label aria-setsize aria-labelledby aria-sort aria-level aria-valuemax aria-live aria-valuemin
  • 37. Indicate what’s going on photo by exfordy
  • 38. Why ARIA?! DevChatt - March 2010 Widget States B B (off) (on) <button> <img src="bold-off.png" alt="bold" /> </button> <button> <img src="bold-on.png" alt="bold" /> </button>
  • 39. Why ARIA?! DevChatt - March 2010 Widget States B B (off) (on) <button> <img src="bold-off.png" alt="not bold" /> </button> <button> <img src="bold-on.png" alt="bold" /> </button>
  • 40. Why ARIA?! DevChatt - March 2010 Widget States B B (off) (on) <button role="button" aria-pressed="false"> <img src="bold-off.png" alt="not bold" /> </button> <button role="button" aria-pressed="true"> <img src="bold-on.png" alt="bold" /> </button>
  • 41. Why ARIA?! DevChatt - March 2010 Complex Widgets role="application"
  • 42. Why ARIA?! DevChatt - March 2010 Complex Widgets role="slider" aria-labelledby="label_handle_valueA" aria-valuemin="0" aria-valuemax="71" aria-valuenow="22" aria-valuetext="Apr 04"
  • 43. Why ARIA?! DevChatt - March 2010 Complex Widgets role="presentation"
  • 44. Why ARIA?! DevChatt - March 2010 Widget States aria-busy aria-checked aria-disabled aria-expanded aria-grabbed aria-hidden aria-invalid aria-pressed aria-selected aria-valuenow (the W3C defines this as a “property”) aria-valuetext (ditto)
  • 45. Highlight “living” content photo by kevin1024
  • 46. Why ARIA?! DevChatt - March 2010 Live Regions <span id="chars_left_notice" class="numeric"> <strong id="status-field-char-counter" class="char-counter">140</strong> </span>
  • 47. Why ARIA?! DevChatt - March 2010 Live Regions <span id="chars_left_notice" class="numeric" aria-live="polite"> <strong id="status-field-char-counter" class="char-counter">140</strong> </span>
  • 48. Why ARIA?! DevChatt - March 2010 Live Regions <span id="chars_left_notice" class="numeric" aria-live="polite"> <strong id="status-field-char-counter" class="char-counter">140</strong> characters left </span>
  • 49. Why ARIA?! DevChatt - March 2010 Notification Options off change not announced polite change announced after user completes her current activity assertive user agent should interrupt the user’s activity, but not immediately rude user agent should interrupt the user’s activity immediately
  • 50. Manage focus with slight-of-hand photo by cfpg
  • 51. Why ARIA?! DevChatt - March 2010 tabindex helps manage focus <div tabindex="0"> <p>This <code>div</code> can now receive focus using a keyboard’s <kbd>tab</kbd> key. How cool is that?</p> </div> <div tabindex="-1"> <p>This <code>div</code> won’t be focused by a user via the <kbd>tab</kbd> key, but JavaScript can <code>focus()</code> it. Nifty, huh?</p> </div>
  • 52. Piecing it all together photo by Richard Jones
  • 53. Why ARIA?! DevChatt - March 2010 Let’s Build a Tabbed Interface
  • 54. Why ARIA?! DevChatt - March 2010 Traditional approach <h1>Pumpkin Pie</h1> <div class="container"> <div class="section"> <h2>Overview</h2> <img src="pie.jpg" alt=""> <p>Whether you're hosting a festive party or a casual get-together with friends, our Pumpkin Pie will make entertaining easy!</p> ... </div> ... <ul class="tabs"> <li><a href="#">Overview</a></li> <li><a href="#">Ingredients</a></li> <li><a href="#">Directions</a></li> <li><a href="#">Nutrition</a></li> </ul> </div>
  • 55. Why ARIA?! DevChatt - March 2010 Static HTML with no style
  • 56. Why ARIA?! DevChatt - March 2010 A little typography
  • 57. Why ARIA?! DevChatt - March 2010 Typography and color
  • 58. Why ARIA?! DevChatt - March 2010 Taking another look
  • 59. Why ARIA?! DevChatt - March 2010 Taking another look .tabbed
  • 60. Why ARIA?! DevChatt - March 2010 Required source <h1>Pumpkin Pie</h1> <div class="tabbed"> <h2>Overview</h2> <img src="pie.jpg" alt="" /> <p>Whether you're hosting a festive party or a casual get-together with friends, our Pumpkin Pie will make entertaining easy!</p> ... <h2>Ingredients</h2> <ul> <li>1 (9<abbr title="inch">in</abbr>) unbaked deep dish pie crust</li> <li>½ cup white sugar</li> ... </ul> <h2>Directions</h2> ... </div>
  • 61. Why ARIA?! DevChatt - March 2010 Understanding the flow Split the content & make Page some tabs JS? Yes No
  • 62. Why ARIA?! DevChatt - March 2010 Mouse-based interaction
  • 63. Why ARIA?! DevChatt - March 2010 Assigning ARIA Roles role="application" aria-activedescendant="folder-1"
  • 64. Why ARIA?! DevChatt - March 2010 Assigning ARIA Roles role="tabpanel" aria-hidden="false" aria-labelledby="folder-1-tab"
  • 65. Why ARIA?! DevChatt - March 2010 Assigning ARIA Roles role="tablist"
  • 66. Why ARIA?! DevChatt - March 2010 Assigning ARIA Roles role="tab" aria-selected="false" aria-describedby="folder-4"
  • 67. Why ARIA?! DevChatt - March 2010 Assigning ARIA Roles role="tab" aria-selected="true" aria-describedby="folder-1"
  • 68. Why ARIA?! DevChatt - March 2010 Updating states and properties tab.onclick = swap; // ... function swap( e ){ // ... old_tab.setAttribute( 'aria-selected', 'false' ); // ... tab.setAttribute( 'aria-selected', 'true' ); // ... old_folder.setAttribute( 'aria-hidden', 'true' ); // ... new_folder.setAttribute( 'aria-hidden', 'false' ); // ... _cabinet.setAttribute( 'aria-activedescendant', _active ); }
  • 69. Why ARIA?! DevChatt - March 2010 Enabling the keyboard tab.onclick = swap; tab.onkeydown = moveFocus; tab.onfocus = swap;
  • 70. Why ARIA?! DevChatt - March 2010 Enabling the keyboard tabindex="0"
  • 71. Why ARIA?! DevChatt - March 2010 Enabling the keyboard tabindex="-1"
  • 72. Why ARIA?! DevChatt - March 2010 Enabling the keyboard function moveFocus( e ) { e = ( e ) ? e : event; var tab = e.target || e.srcElement, key = e.keyCode || e.charCode, pass = true; tab = getTab( tab ); // keyboard handling goes here if ( ! pass ) { return cancel( e ); } }
  • 73. Why ARIA?! DevChatt - March 2010 Enabling the keyboard function getTab( tab ) { while ( tab.nodeName.toLowerCase() != 'li' ) { tab = tab.parentNode; } return tab; }
  • 74. Why ARIA?! DevChatt - March 2010 Enabling the keyboard function moveFocus( e ) { // ... switch ( key ) { case 37: // left arrow case 38: // up arrow move( tab, 'previous', false ); pass = false; break; // down (39), right (40), home (36), end (35) // should be added here case 27: // escape tab.blur(); pass = false; break; } // ... }
  • 75. Why ARIA?! DevChatt - March 2010 Enabling the keyboard function move( tab, direction, complete ) { if ( complete ) { if ( direction == 'previous' ) { tab.parentNode.childNodes[0].focus(); } else { tab.parentNode .childNodes[tab.parentNode .childNodes.length-1].focus(); } } else { var target = direction == 'previous' ? tab.previousSibling : tab.nextSibling; if ( target ) { target.focus(); } } }
  • 76. Why ARIA?! DevChatt - March 2010 Enabling the keyboard function swap( e ){ // ... old_tab.setAttribute( 'aria-selected', 'false' ); old_tab.setAttribute( 'tabindex', '-1' ); // ... tab.setAttribute( 'aria-selected', 'true' ); tab.setAttribute( 'tabindex', '0' ); // ... old_folder.setAttribute( 'aria-hidden', 'true' ); old_folder.setAttribute( 'tabindex', '-1' ); // ... new_folder.setAttribute( 'aria-hidden', 'false' ); new_folder.setAttribute( 'tabindex', '0' ); // ... }
  • 77. Why ARIA?! DevChatt - March 2010 The Fruit (Pie) of Our Labor
  • 78. Why ARIA?! DevChatt - March 2010 Who is Supporting WAI-ARIA?
  • 79. Why ARIA?! DevChatt - March 2010 For More WAI-ARIA Spec w3.org/TR/wai-aria/ WAI-ARIA Support in Browsers paciellogroup.com/blog/aria-tests/ARIA-SafariaOperaIEFF.html TabInterface easy-designs.github.com/tabinterface.js/
  • 80. Why ARIA?! DevChatt - March 2010 Slides available at http://slideshare.net/AaronGustafson This presentation is licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 flickr Photo Credits “ferris wheel? not yet...” by drcorneilus “Hunter Museum” by TimothyJ “No, I don't need any help - I'm…” by Ed Yourdon “The almighty mouse” by lastquest “wii browser - zoomed in” by placenamehere “Legospective” by Guillermо “I love my toolbox 15 July Scavenger Hunt” by Saffanna “Dual Samsung Monitors” by steve-uk “Keystone of the Monumental Arch,…” by Verity Cridland “Lego” by DavePress “iFlickr touch screen” by exfordy “Green Plant” by kevin1024 “Cartas” by cfpg “Lego Millenium Falcon” by Richard Jones