SlideShare a Scribd company logo
1 of 28
Download to read offline
Developing an
Accessibile Web
     Matt Henry
     Viget Labs
About Me

• Senior Front-End Developer at Viget Labs
• Ex-Yahoo! Mobile
• @greenideas
• Fan of owls
This stuff is important

• More to accessibility than Section 508
• Try to use one of your apps with a screen
  reader and without a mouse.
• Was it awesome? Could it be more
  awesome?
Stop me if you’ve heard
    this one before
• Okay, don’t actually stop me.
• Everything you know about accessibility
  is... probably still right.
• Progressive enhancement and alt tags are as
  important today as they ever were
Progressive
         Enhancement
1. Semantic HTML
2. Web 1.0 interactions--reload required
3. CSS
4. Javascript
Accessibility vs.
         Javascript?
• The good news: screen readers can
  understand Javascript.
• The bad news: your sites still need to work
  without Javascript.
• Site-critical interactions should work with
  and without JS.
Hijax

• Jeremy Keith
• All of your links should be actual links (i.e.
  there should be a real page that exists at
  that href).
• Use JS to “hijack” the link, and do your
  fancy Ajax magic.
Demo
Building for Screen
         Readers
• Alt attributes
• Generated content
• Clean, semantic HTML
• Links are for navigating. Buttons are for
  doing stuff.
Bad


<a href=”#”>Load my Ajax</a>
Better


<a href=”#” role=”button”>Load
my Ajax</a>
Best


<button>Load my Ajax</button>
Input methods

• Accessibility is more than just targeting
  screen readers.
• Keyboards, sip & puff, head/eye trackers
• Is your application usable without a mouse?
Interacting via the
        Keyboard
• Don’t (just) use :hover for interactions (this
  helps make your app mobile-friendly, too)
• Anything you can do with a mouse, you
  should be able to do with the keyboard
• Use tabindex to make elements accessible
  via the keyboard
tabindex
• tabindex      = 0: tab in document order

• tabindex     = 1,2,3... : order by
  tabindex value
• tabindex     = -1: Element can’t be
  tabbed to, but can be given focus
  programmatically
• Explicit ordinal tabindex shouldn’t be
  necessary
Demo
WAI-ARIA

• Web Accessibility Initiative -- Accessible
  Rich Internet Applications
• Label content for screen readers
• Moar semantic
Roles
• Used to describe a document’s structure
• Landmark roles: application, main, section,
  navigation, etc.
• Landmark roles overlap some with HTML5
  elements, but you should still use the role
  (e.g. <section role=”section”>)

• Widget roles: menu, toolbar, dialog,
States & Properties
• Used to describe an application’s state
• Global states: aria-busy, aria-
  activedecendant
• Widget attributes: aria-pressed, aria-
  hidden, aria-autocomplete
• Relationship attributes: aria-labelledby, aria-
  controls
Demo
What does ARIA buy
        you?

• Lots of semantic hooks to describe your
  application’s functionality
• Guidance for how to construct a screen-
  reader-friendly widget
What are you still on
the hook for with ARIA
• ARIA doesn’t give you off the shelf widgets
• You have to roll your own keyboard
  support (unless you rely on what screen
  readers give you)
• It’s your responsibility to manage focus
Why ARIA?

• Provide a non-visual representation of
  complication interactions in your
  application
• Still more semantic
• Easier styling & scripting
ARIA Support
• Good. Not great.
• Support depends on combo of browser +
  screen reader
• Most modern browsers correctly expose at
  least some ARIA roles.
• Like anything, check for support before
  relying on ARIA for anything important.
Testing with Screen
         Readers

• Make screen reader testing part of your
  cross-browser testing routine
• OSX & iOS:VoiceOver is built in
• Windows: NVDA
Summary
• Yes, your app still has to work without
  Javascript. Sorry.
• Hijax for content that you load in via Ajax
• Semantic markup
• Support the Keyboard
• Use ARIA. Be awesome.
Thanks.
           <3
http://spkr8.com/t/5431
Links
• ARIA specification: http://www.w3.org/TR/
  wai-aria/
• ARIA Authoring Practices: http://
  www.w3.org/TR/wai-aria-practices/
• http://www.nvda-project.org/
• Derek Featherstone on ARIA in A List
  Apart: http://www.alistapart.com/articles/
  aria-and-progressive-enhancement/

More Related Content

What's hot

jQuery UI & Mobile - The Great Merger
jQuery UI & Mobile - The Great MergerjQuery UI & Mobile - The Great Merger
jQuery UI & Mobile - The Great Merger
scottgonzalez
 
MobileClient
MobileClientMobileClient
MobileClient
rpatil82
 

What's hot (20)

Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013) Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013)
 
Website
WebsiteWebsite
Website
 
はじめてのWKInterfaceController
はじめてのWKInterfaceControllerはじめてのWKInterfaceController
はじめてのWKInterfaceController
 
Natural Language UI Testing using Behavior Driven Development with Pavlov and...
Natural Language UI Testing using Behavior Driven Development with Pavlov and...Natural Language UI Testing using Behavior Driven Development with Pavlov and...
Natural Language UI Testing using Behavior Driven Development with Pavlov and...
 
Responsive Web Design - Tom Robertshaw
Responsive Web Design - Tom RobertshawResponsive Web Design - Tom Robertshaw
Responsive Web Design - Tom Robertshaw
 
Ansible
AnsibleAnsible
Ansible
 
jQuery Keynote - Fall 2010
jQuery Keynote - Fall 2010jQuery Keynote - Fall 2010
jQuery Keynote - Fall 2010
 
jQuery UI & Mobile - The Great Merger
jQuery UI & Mobile - The Great MergerjQuery UI & Mobile - The Great Merger
jQuery UI & Mobile - The Great Merger
 
Joomla REST API
Joomla REST APIJoomla REST API
Joomla REST API
 
Web app development with Flask
Web app development with FlaskWeb app development with Flask
Web app development with Flask
 
Single page applications the basics
Single page applications the basicsSingle page applications the basics
Single page applications the basics
 
Web technologies practical guide
Web technologies practical guideWeb technologies practical guide
Web technologies practical guide
 
Isomorphic Aplication with Javascript
Isomorphic Aplication with JavascriptIsomorphic Aplication with Javascript
Isomorphic Aplication with Javascript
 
Dictionary by phoneGap
Dictionary by phoneGapDictionary by phoneGap
Dictionary by phoneGap
 
jQuery Chicago 2014 - Next-generation JavaScript Testing
jQuery Chicago 2014 - Next-generation JavaScript TestingjQuery Chicago 2014 - Next-generation JavaScript Testing
jQuery Chicago 2014 - Next-generation JavaScript Testing
 
MobileClient
MobileClientMobileClient
MobileClient
 
10 Things You Can Do to Speed Up Your Web App Today
10 Things You Can Do to Speed Up Your Web App Today10 Things You Can Do to Speed Up Your Web App Today
10 Things You Can Do to Speed Up Your Web App Today
 
Ember
EmberEmber
Ember
 
Developing JavaScript Widgets
Developing JavaScript WidgetsDeveloping JavaScript Widgets
Developing JavaScript Widgets
 
4 JavaScript Tools Every Designer Should Know About
4 JavaScript Tools Every Designer Should Know About4 JavaScript Tools Every Designer Should Know About
4 JavaScript Tools Every Designer Should Know About
 

Similar to Developing an Accessible Web

Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011
Nuxeo
 
Win j svsphonegap-damyan-petev-mihail-mateev
Win j svsphonegap-damyan-petev-mihail-mateevWin j svsphonegap-damyan-petev-mihail-mateev
Win j svsphonegap-damyan-petev-mihail-mateev
Mihail Mateev
 
Mobile App Development
Mobile App DevelopmentMobile App Development
Mobile App Development
Chris Morrell
 
SlickGrid Touch: Making complex JavaScript widgets work on mobile devices
SlickGrid Touch: Making complex JavaScript widgets work on mobile devicesSlickGrid Touch: Making complex JavaScript widgets work on mobile devices
SlickGrid Touch: Making complex JavaScript widgets work on mobile devices
reebalazs
 
Implementing Acessibility in Liferay 6.1
Implementing Acessibility in Liferay 6.1Implementing Acessibility in Liferay 6.1
Implementing Acessibility in Liferay 6.1
Julio Camarero
 
Rich Internet Applications and Flex - 1
Rich Internet Applications and Flex - 1Rich Internet Applications and Flex - 1
Rich Internet Applications and Flex - 1
Vijay Kalangi
 

Similar to Developing an Accessible Web (20)

Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011
 
Win j svsphonegap-damyan-petev-mihail-mateev
Win j svsphonegap-damyan-petev-mihail-mateevWin j svsphonegap-damyan-petev-mihail-mateev
Win j svsphonegap-damyan-petev-mihail-mateev
 
Web accessibility workshop 4
Web accessibility workshop 4Web accessibility workshop 4
Web accessibility workshop 4
 
Mobile App Development
Mobile App DevelopmentMobile App Development
Mobile App Development
 
Webapi
WebapiWebapi
Webapi
 
MAST Portal: drivers and recommendations
MAST Portal: drivers and recommendations  MAST Portal: drivers and recommendations
MAST Portal: drivers and recommendations
 
Accessible UIs with jQuery and Infusion
Accessible UIs with jQuery and InfusionAccessible UIs with jQuery and Infusion
Accessible UIs with jQuery and Infusion
 
Mobile web or native app
Mobile web or native appMobile web or native app
Mobile web or native app
 
How to engineer accessible websites
How to engineer accessible websitesHow to engineer accessible websites
How to engineer accessible websites
 
The Mobile Development Landscape
The Mobile Development LandscapeThe Mobile Development Landscape
The Mobile Development Landscape
 
Twitter bootstrap1
Twitter bootstrap1Twitter bootstrap1
Twitter bootstrap1
 
Touch the web
Touch the webTouch the web
Touch the web
 
Tech Thursdays: Building Products
Tech Thursdays: Building ProductsTech Thursdays: Building Products
Tech Thursdays: Building Products
 
SlickGrid Touch: Making complex JavaScript widgets work on mobile devices
SlickGrid Touch: Making complex JavaScript widgets work on mobile devicesSlickGrid Touch: Making complex JavaScript widgets work on mobile devices
SlickGrid Touch: Making complex JavaScript widgets work on mobile devices
 
Infinum android talks #12 - Google IO report: Milkshakes, Marshmallows and Ma...
Infinum android talks #12 - Google IO report: Milkshakes, Marshmallows and Ma...Infinum android talks #12 - Google IO report: Milkshakes, Marshmallows and Ma...
Infinum android talks #12 - Google IO report: Milkshakes, Marshmallows and Ma...
 
The Mobile Web Revealed For The Java Developer
The Mobile Web Revealed For The Java DeveloperThe Mobile Web Revealed For The Java Developer
The Mobile Web Revealed For The Java Developer
 
Implementing Acessibility in Liferay 6.1
Implementing Acessibility in Liferay 6.1Implementing Acessibility in Liferay 6.1
Implementing Acessibility in Liferay 6.1
 
Serverless Computing with Azure Functions and Xamarin
Serverless Computing with Azure Functions and XamarinServerless Computing with Azure Functions and Xamarin
Serverless Computing with Azure Functions and Xamarin
 
Sahi Principles and Architecture
Sahi Principles and ArchitectureSahi Principles and Architecture
Sahi Principles and Architecture
 
Rich Internet Applications and Flex - 1
Rich Internet Applications and Flex - 1Rich Internet Applications and Flex - 1
Rich Internet Applications and Flex - 1
 

Recently uploaded

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Recently uploaded (20)

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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
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...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Developing an Accessible Web

  • 1. Developing an Accessibile Web Matt Henry Viget Labs
  • 2. About Me • Senior Front-End Developer at Viget Labs • Ex-Yahoo! Mobile • @greenideas • Fan of owls
  • 3. This stuff is important • More to accessibility than Section 508 • Try to use one of your apps with a screen reader and without a mouse. • Was it awesome? Could it be more awesome?
  • 4. Stop me if you’ve heard this one before • Okay, don’t actually stop me. • Everything you know about accessibility is... probably still right. • Progressive enhancement and alt tags are as important today as they ever were
  • 5. Progressive Enhancement 1. Semantic HTML 2. Web 1.0 interactions--reload required 3. CSS 4. Javascript
  • 6. Accessibility vs. Javascript? • The good news: screen readers can understand Javascript. • The bad news: your sites still need to work without Javascript. • Site-critical interactions should work with and without JS.
  • 7. Hijax • Jeremy Keith • All of your links should be actual links (i.e. there should be a real page that exists at that href). • Use JS to “hijack” the link, and do your fancy Ajax magic.
  • 9. Building for Screen Readers • Alt attributes • Generated content • Clean, semantic HTML • Links are for navigating. Buttons are for doing stuff.
  • 13. Input methods • Accessibility is more than just targeting screen readers. • Keyboards, sip & puff, head/eye trackers • Is your application usable without a mouse?
  • 14. Interacting via the Keyboard • Don’t (just) use :hover for interactions (this helps make your app mobile-friendly, too) • Anything you can do with a mouse, you should be able to do with the keyboard • Use tabindex to make elements accessible via the keyboard
  • 15. tabindex • tabindex = 0: tab in document order • tabindex = 1,2,3... : order by tabindex value • tabindex = -1: Element can’t be tabbed to, but can be given focus programmatically • Explicit ordinal tabindex shouldn’t be necessary
  • 16. Demo
  • 17. WAI-ARIA • Web Accessibility Initiative -- Accessible Rich Internet Applications • Label content for screen readers • Moar semantic
  • 18. Roles • Used to describe a document’s structure • Landmark roles: application, main, section, navigation, etc. • Landmark roles overlap some with HTML5 elements, but you should still use the role (e.g. <section role=”section”>) • Widget roles: menu, toolbar, dialog,
  • 19. States & Properties • Used to describe an application’s state • Global states: aria-busy, aria- activedecendant • Widget attributes: aria-pressed, aria- hidden, aria-autocomplete • Relationship attributes: aria-labelledby, aria- controls
  • 20. Demo
  • 21. What does ARIA buy you? • Lots of semantic hooks to describe your application’s functionality • Guidance for how to construct a screen- reader-friendly widget
  • 22. What are you still on the hook for with ARIA • ARIA doesn’t give you off the shelf widgets • You have to roll your own keyboard support (unless you rely on what screen readers give you) • It’s your responsibility to manage focus
  • 23. Why ARIA? • Provide a non-visual representation of complication interactions in your application • Still more semantic • Easier styling & scripting
  • 24. ARIA Support • Good. Not great. • Support depends on combo of browser + screen reader • Most modern browsers correctly expose at least some ARIA roles. • Like anything, check for support before relying on ARIA for anything important.
  • 25. Testing with Screen Readers • Make screen reader testing part of your cross-browser testing routine • OSX & iOS:VoiceOver is built in • Windows: NVDA
  • 26. Summary • Yes, your app still has to work without Javascript. Sorry. • Hijax for content that you load in via Ajax • Semantic markup • Support the Keyboard • Use ARIA. Be awesome.
  • 27. Thanks. <3 http://spkr8.com/t/5431
  • 28. Links • ARIA specification: http://www.w3.org/TR/ wai-aria/ • ARIA Authoring Practices: http:// www.w3.org/TR/wai-aria-practices/ • http://www.nvda-project.org/ • Derek Featherstone on ARIA in A List Apart: http://www.alistapart.com/articles/ aria-and-progressive-enhancement/