Accessibility and Web Technologies @HTML5_Toronto

54
Accessibility & Web Technologies HTML5 Toronto Web Developers Meetup @georgezamfir [email protected] #a11y = accessibility

description

Accessibility questions? Get in contact: [email protected]. George Zamfir's presentation on disabilities & web accessibility at the HTML5 Toronto Web App Developers Meetup in Toronto on Jan 19, 2012. "We are only as (dis)abled as the environment around us!" Powerpoint & PDF Versions at http://bit.ly/preso_a11y_html5

Transcript of Accessibility and Web Technologies @HTML5_Toronto

Page 1: Accessibility and Web Technologies @HTML5_Toronto

Accessibility & Web Technologies

HTML5 Toronto Web Developers Meetup

@[email protected]

#a11y = accessibility

Page 2: Accessibility and Web Technologies @HTML5_Toronto

@[email protected]

#a11y = accessibility

HTML5 Toronto Web Developers Meetup

The power of the Web is in its universalityThe power of the Web is in its universalityAccess by everyone regardless of disability is an essential aspeAccess by everyone regardless of disability is an essential aspectct

-- Tim BernersTim Berners--Lee Lee W3C DirectorW3C Director

Inventor of the World Wide WebInventor of the World Wide Web

Page 3: Accessibility and Web Technologies @HTML5_Toronto

What is #a11y ?

Page 4: Accessibility and Web Technologies @HTML5_Toronto

What is accessibility ?

Page 5: Accessibility and Web Technologies @HTML5_Toronto

Accessibility is about disabilities…

What is accessibility ?

It’s making things accessible for people with disabilities, riiiiight?

Page 6: Accessibility and Web Technologies @HTML5_Toronto

"We are only as (dis)abledas the environment around us!"

What is accessibility ?

Page 7: Accessibility and Web Technologies @HTML5_Toronto

"We are only as (dis)abledas the environment around us!"

What is accessibility ?

- Oscar Pistorius

Page 8: Accessibility and Web Technologies @HTML5_Toronto

"We are only as (dis)abledas the environment around us!"

What is accessibility ?

Gillian Lynne – “She’s not sick, she’s a dancer!”

Page 9: Accessibility and Web Technologies @HTML5_Toronto

4 Basic Types of Needs

What is accessibility ?

Visual low vision, colorblindness, blindnessScreen magnifiers, text-to-speech, refreshable braille, good mark-up

Auditory hearing loss, deafnessCaptions & transcripts, haptic feedback, good mark-up

Mobility dexterity, strength, loss of limbSpeech-to-text, alternative input hardware, good mark-up

Cognitive & Speech dyslexia, ADD, lack of skillsWord prediction, augmentative devices (hear & see), good mark-up

Page 10: Accessibility and Web Technologies @HTML5_Toronto

Accessibility is not just about disabilities!

What is accessibility ?

Disabilities

Aging population

Non-native language speakers

Low (computer?) literacy

Page 11: Accessibility and Web Technologies @HTML5_Toronto

It’s not about them, it’s about all of us!

What is accessibility ?

Page 12: Accessibility and Web Technologies @HTML5_Toronto

Need for web accessibility is ever greater!

Page 13: Accessibility and Web Technologies @HTML5_Toronto

Mobile Web Great promoter for accessibility

What is accessibility ?

Page 14: Accessibility and Web Technologies @HTML5_Toronto

Need for web accessibility is ever greater!But what do we do?

What is accessibility ?

Page 15: Accessibility and Web Technologies @HTML5_Toronto

What is accessibility ?

Allowing people of all abilities & disabilities to have equal access to

information & functionality

Page 16: Accessibility and Web Technologies @HTML5_Toronto

Why care about accessibility ?

It’s the right thing to do

Regulations say you must (AODA)

Leaving out some of the audience is bad business.

Page 17: Accessibility and Web Technologies @HTML5_Toronto

Assistive Technologies (AT)

Page 18: Accessibility and Web Technologies @HTML5_Toronto

Assistive Technologies Demo

Screen Magnifiers: ZoomText, iOS native

Screen Readers: NVDA, Jaws, VoiceOver

Voice Recognition: Dragon Naturally Speaking, Siri

iPhone / iPad: youtube.com/watch?v=t60voPIY5xY

Assistive Technologies (AT)

Page 19: Accessibility and Web Technologies @HTML5_Toronto

ATs, How Do They Work ?

Assistive Technologies (AT)

Page 20: Accessibility and Web Technologies @HTML5_Toronto

ATs – Accessibility APIs – Code(Accessibility Stack)(Accessibility Stack)

Assistive Technologies (AT)

FRONT‐END CODEFRONTFRONT‐‐END CODEEND CODE

Accessibility APIsAccessibility APIsAccessibility APIs

Assistive Technologies (ATs)Assistive Technologies (Assistive Technologies (ATsATs))

Page 21: Accessibility and Web Technologies @HTML5_Toronto

Accessibility StackAT - Accessibility APIs – FRONT-END CODE

WCAG 2Web Content Accessibility Guidelines 2

AODAAccessibility for Ontarians with Disabilities Act

Page 22: Accessibility and Web Technologies @HTML5_Toronto

Accessibility Stack

Accessibility Stack: ATs – Accessibility APIs - CODE

FRONT‐END CODEHTML, CSS, JavaScript

FRONTFRONT‐‐END CODEEND CODEHTML, CSS, JavaScriptHTML, CSS, JavaScript

Accessibility APIsMSAA, UIA, IA2, AX/uiA, AT‐SPI, UAAG, ARIA

Accessibility APIsAccessibility APIsMSAA, UIA, IA2, AX/MSAA, UIA, IA2, AX/uiAuiA, AT, AT‐‐SPI, UAAG, ARIASPI, UAAG, ARIA

Assistive Technologies (ATs)

JAWS, NVDA, Dragon, ZoomText, VoiceOver, etc.

Assistive Technologies (Assistive Technologies (ATsATs))

JAWS, NVDA, Dragon, JAWS, NVDA, Dragon, ZoomTextZoomText, , VoiceOverVoiceOver, etc., etc.

Page 23: Accessibility and Web Technologies @HTML5_Toronto

Accessibility Stack – Text-to-Speech Example

Accessibility Stack: ATs – Accessibility APIs - CODE

<a href=“http://google.com”>search engine</a>

HTML CODE

<a <a hrefhref==““http://http://google.comgoogle.com””>search engine</a>>search engine</a>

HTML CODEHTML CODE

AXTextLink AXURL=“http://google.com” AXTitle=“search engine”

Mac OSx / iOS Accessibility Protocols

AXTextLinkAXTextLink AXURL=AXURL=““http://http://google.comgoogle.com”” AXTitleAXTitle==““search enginesearch engine””

Mac Mac OSxOSx / / iOSiOS Accessibility ProtocolsAccessibility Protocols

text‐to‐speech: “search engine link”

iPhone / iPad VoiceOver

texttext‐‐toto‐‐speech: speech: ““search engine linksearch engine link””

iPhoneiPhone / / iPadiPad VoiceOverVoiceOver

Page 24: Accessibility and Web Technologies @HTML5_Toronto

WCAG 2

Web Content Accessibility Guidelines (WCAG 2) - w3.org/TR/WCAG

So, how in the world do I know how to build for all these types of needs?

It would be nice to have one standard that addresses all needs / disabilities / ATs, right?

Page 25: Accessibility and Web Technologies @HTML5_Toronto

WCAG 2

Web Content Accessibility Guidelines (WCAG 2) - w3.org/TR/WCAG

W3C set of 12 guidelines

Technology agnostic – not just for HTML

Covers a wide range of needs / disabilities

Developed by W3C & numerous experts

Widely adopted as THE standard for compliance

3 levels of compliance: A, AA, AAA

Page 26: Accessibility and Web Technologies @HTML5_Toronto

How to Use WCAG 2 ?

Web Content Accessibility Guidelines (WCAG 2) - w3.org/TR/WCAG

Set of 12 Guidelines divided into 4 Principles

Perceivable Information and UI can’t be invisible to all senses

Operable Users must be able to operate UI & navigation

Understandable Info & operation of UI must be understandable

Robust Content must be interpreted reliably by all user agents

Page 27: Accessibility and Web Technologies @HTML5_Toronto

Web Standards & WCAG 2

Web Content Accessibility Guidelines (WCAG 2) - w3.org/TR/WCAG

Use web standards for greater interoperability &

functionality to people using AT, alternative

browsers, mobile devices

Doesn’t necessarily provide an engaging UX but

using standards at least people can have an

experience in the first place.

Page 28: Accessibility and Web Technologies @HTML5_Toronto

Accessibility for Ontarians with Disabilities Act (AODA)

Accessibility for Ontarians with Disabilities Act – AODA 2005

• ON legislation for accessible products & services

• Information & Communication standard (IC) – 1/5

• IC standard – requirement to conform with WCAG 2

• For businesses in both the private & public sectors

Page 29: Accessibility and Web Technologies @HTML5_Toronto

Information & Communication StandardTimelines

Information & Communication (IC) Standard – AODA

ON Government

All public & private > 50

Level AA - 2012

Level A – 2014, AA – 2021

It’s your responsibilityto deliver accessible products & services to your clients

who may not necessarily be the users.

Page 30: Accessibility and Web Technologies @HTML5_Toronto

It’s Your Responsibility!

Page 31: Accessibility and Web Technologies @HTML5_Toronto

Practical Accessibility

1. Semantic Content

2. Keyboard Access

3. Forms Fields & More

4. UI Visual Design & Code Order

5. Progressive Enhancement & ARIA

Practical #A11Y

Page 32: Accessibility and Web Technologies @HTML5_Toronto

Yo dawg, I heard you like<div>

so I put a <div> in your <div>’s <div>Practical #A11Y – Semantic Content

Page 33: Accessibility and Web Technologies @HTML5_Toronto

Practical #A11Y – Semantic Content

<div class="T-I J-J5-Ji T-I-KE L3" role="button" tabindex="0" style="-webkit-user-select: none; " gsdh="cm">COMPOSE</div>

Gmail

<div id=":rj" class="T-I J-J5-Ji T-I-atl L3" role="button" tabindex="0" style="-webkit-user-select: none; "><span class="w-nIgmKf T-I-J3 J-J5-Ji"></span></div>

Page 34: Accessibility and Web Technologies @HTML5_Toronto

Semantic Content

Practical #A11Y – Semantic Content

Page 35: Accessibility and Web Technologies @HTML5_Toronto

Keyboard Access

Page 36: Accessibility and Web Technologies @HTML5_Toronto

This website is best viewed at 1024x768 and only works with a mouse

Practical #A11Y – Keyboard Access

Page 37: Accessibility and Web Technologies @HTML5_Toronto

2 BIG concepts:

Everything is functional by keyboard(including highly interactive UI elements)

Visual focus indicator(be the :focus to my :hover)

Practical #A11Y – Keyboard Access

Page 38: Accessibility and Web Technologies @HTML5_Toronto

Forms Fields & More

Page 39: Accessibility and Web Technologies @HTML5_Toronto

Forms Fields & More

Practical #A11Y – Forms Fields & More

Associate <label> with form <input> using for / id

Use <fieldset> & <legend> for logical groups of fields(then hide off-screen what you don’t / can’t style appropriately)

Deal with input errors & error messages(beware of browsers’ support for required=)

How to do accessible tooltips / hover effects

Page 40: Accessibility and Web Technologies @HTML5_Toronto

Associate <label> with form <input> using for / id

Practical #A11Y – Forms Fields & More

<label for="COAPP“>Yes, I am applying with a co-applicant

</label><input id="COAPP" type="radio" value="Yes“ title="Yes, I am applying with a co-applicant" required="required“>

<fieldset><legend>Are you applying with a co-applicant?</legend>

<label for="COAPPNO“ >No, I am not applying with a co-applicant

</label><input id="COAPPNO" type="radio" value="No“ title="No, I am

not applying with a co-applicant" required="required"></fieldset>

Use <fieldset> & <legend> for logical groups of fields(then hide off-screen what you don’t / can’t style appropriately)

<h3 class="section">Are you applying with a co-applicant?</h3>

Page 41: Accessibility and Web Technologies @HTML5_Toronto

Deal with input errors & error messages(be aware of browsers’ support for required=)

Practical #A11Y – Forms Fields & More

• Visual & non-visual indicator that there’s an error on the field

• Keyboard / visual focus moves to errors area

• A way to move back from the error to the field

Page 42: Accessibility and Web Technologies @HTML5_Toronto

How to do accessible tooltips / hover effects

Practical #A11Y – Forms Fields & More

• Not just :hover anymore (look at mobile)

• Open / close by keyboard

• Manage focus

• Enhance with ARIA

Page 43: Accessibility and Web Technologies @HTML5_Toronto

UI Visual Design & Code Order

Page 44: Accessibility and Web Technologies @HTML5_Toronto

UI Visual Design & Code Order

Page 45: Accessibility and Web Technologies @HTML5_Toronto

UI Visual Design & Code Order

Page 46: Accessibility and Web Technologies @HTML5_Toronto
Page 47: Accessibility and Web Technologies @HTML5_Toronto

UI Visual Design & Code Order

Most often the design flow should match the source code order

Markup content in the order it should be read NOT in the order it should be displayed

It makes it much worse for AT users (try tabbing through every amazon.com page just to get to your product specs)

Practical #A11Y – UI Visual Design & Code Order

Page 48: Accessibility and Web Technologies @HTML5_Toronto

Progressive Enhancement & ARIA

Text Content & prose

HTML Semantic & some behaviour

CSS Presentation

JavaScript Advanced behaviourARIA Extend semantics

(insight into roles & states)

Practical #A11Y – Progressive Enhancement & ARIA

Page 49: Accessibility and Web Technologies @HTML5_Toronto

ARIA integrated into HTML5 but predates it

Set of attributes that specify meaning - role, properties, state

Really good for widgets that we don’t have in HTML / HTML5

ARIA-specific mark-up doesn’t affect functionality

Doesn’t mean we can get away with <div> <div> <div> <div> <div>

Practical #A11Y – ARIA - dev.w3.org/html5/markup/aria/Overview.html

Page 50: Accessibility and Web Technologies @HTML5_Toronto

It’s a plane… It’s a bird… It’s a……slider? Wait a minute, there’s no such thing in HTML!

<a href="#" aria-valuemin="0" aria-valuemax="10" role="slider" aria-labelledby="question-transactions" title="Transactions per week?" aria-valuenow="5" aria-valuetext="5 transactions">5</a>

Practical #A11Y – ARIA - dev.w3.org/html5/markup/aria/Overview.html

Page 51: Accessibility and Web Technologies @HTML5_Toronto

Practical Accessibility Testing

Design stage: Colour contrast & general layout

Prototype stage: Keyboard & automated testing

Semantic content

Some AT testing

Development stage: Functional & AT testing

Usability testing with real people

Practical #A11Y Testing

Page 52: Accessibility and Web Technologies @HTML5_Toronto

Testing Techniques & Tools

Keyboard: Test for keyboard functionality & visual focus

Automated Testing: Deque FireEyes

Webaim Wave

Tools & Plugins: Firebug, Web Developer, Color Checker (FF)

AIS Web Toolbar (IE)

Practical #A11Y Testing

Your Brain: No tools can replace it!

Page 53: Accessibility and Web Technologies @HTML5_Toronto

A Few Thing to Remember

Write semantic content & markup, presentation matters not

Accessibility is not a feature, it’s a subset of usability

Remember: not everyone is using a mouse

Start small, do 1 thing but do it well

ASK FOR HELP!

Practical #A11Y Testing

Page 54: Accessibility and Web Technologies @HTML5_Toronto