124
© 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. #WWDC14 Improving the Accessibility and Usability of Complex Web Applications Session 516 Jesse Bunch Productivity Engineering Media

Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

© 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

#WWDC14

Improving the Accessibility and Usability of Complex Web Applications

Session 516 Jesse Bunch Productivity Engineering

Media

Page 2: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 3: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 4: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 5: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 6: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 7: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 8: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 9: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 10: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

What You Will Learn

Page 11: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

What You Will Learn

Accessibility fundamentals

Page 12: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

What You Will Learn

Accessibility fundamentals

Latest research and statistics

Page 13: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

What You Will Learn

Accessibility fundamentals

Latest research and statistics

Accessibility standards

Page 14: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

What You Will Learn

Accessibility fundamentals

Latest research and statistics

Accessibility standards

ARIA and focus management

Page 15: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

What You Will Learn

Accessibility fundamentals

Latest research and statistics

Accessibility standards

ARIA and focus management

Common issues and solutions

Page 16: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 17: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 18: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 19: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 20: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 21: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Accessibility

Page 22: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

AccessibilitySupports real people with real needs by providing an alternate interaction model, like a keyboard or switch

Page 23: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Universal DesignDesign so thoughtful that it works for everyone

Page 24: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 25: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

…ALIGNED PERFECTLY FOR AN INCREDIBLE SWING

Page 26: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 27: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 28: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 29: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 30: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 31: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 32: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 33: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 34: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 35: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 36: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 37: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Here’s Why

Page 38: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Visually impaired, worldwide285 Million

World Health Organization, 2013

Page 39: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Completely blind, worldwide40 Million

World Health Organization, 2013

Page 40: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Accessibility Standards

Page 41: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Web Content Accessibility GuidelinesWCAG

Page 42: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Basic Principles

Page 43: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 44: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Perceivable

Operable

Understandable

Robust

Page 45: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Perceivable

Page 46: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Perceivable

Page 47: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Operable

Page 48: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Understandable

Page 49: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Understandable

Page 50: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Understandable

Page 51: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Understandable

Page 52: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Understandable

Page 53: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Robust

Page 54: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Robust

Page 55: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Robust

Page 56: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Robust

Page 57: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Here’s How

Page 58: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Use Semantic Markup

Page 59: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Semantic Markup

Page 60: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Semantic Markup

Uses <div>

Page 61: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Semantic Markup

Uses <div> Uses semantic headings

Page 62: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Semantic Markup

<div style=“font-size: 18px;”> All About Widgets </div>

Page 63: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Semantic Markup

<div style=“font-size: 18px;”> All About Widgets </div>

Page 64: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Semantic Markup

<div style=“font-size: 18px;”> All About Widgets </div>

Page 65: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Semantic Markup

<div style=“font-size: 18px;”> All About Widgets </div>

<h1>All About Widgets</h1>

Page 66: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Semantic Markup

<div style=“font-size: 18px;”> All About Widgets </div>

<h1>All About Widgets</h1>

Page 67: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Semantic Markup

<div style=“font-size: 18px;”> All About Widgets </div>

<h1>All About Widgets</h1>

Page 68: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Use Standard Controls

Page 69: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ControlsCustom slider

0 100

Page 70: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ControlsCustom slider

<div class=“slider”> <div class=“left-label”> ... </div> <div class=“slider-handle”> ... </div> <div class=“right-label”> ... </div> </div>

0 100

Page 71: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ControlsCustom slider

<div class=“slider”> <div class=“left-label”> ... </div> <div class=“slider-handle”> ... </div> <div class=“right-label”> ... </div> </div>

// Mouseel.addEventListener(“mousedown”, handleMouseDown);el.addEventListener(“mousemove”, handleMouseMove);el.addEventListener(“mouseup”, handleMouseUp);

0 100

Page 72: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ControlsCustom slider

<div class=“slider”> <div class=“left-label”> ... </div> <div class=“slider-handle”> ... </div> <div class=“right-label”> ... </div> </div>

// Mouseel.addEventListener(“mousedown”, handleMouseDown);el.addEventListener(“mousemove”, handleMouseMove);el.addEventListener(“mouseup”, handleMouseUp);

// Touchel.addEventListener(“touchstart”, handleTouchStart);el.addEventListener(“touchmove”, handleTouchMove);el.addEventListener(“touchend”, handleTouchEnd);el.addEventListener(“touchleave”, handleTouchLeave);el.addEventListener(“touchcancel”, handleTouchCancel);

0 100

Page 73: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

<div class=“slider”> <div class=“left-label”> ... </div> <div class=“slider-handle”> ... </div> <div class=“right-label”> ... </div> </div>

// Mouse el.addEventListener(“mousedown”, handleMouseDown); el.addEventListener(“mousemove”, handleMouseMove); el.addEventListener(“mouseup”, handleMouseUp); !

// Touch el.addEventListener(“touchstart”, handleTouchStart); el.addEventListener(“touchmove”, handleTouchMove); el.addEventListener(“touchend”, handleTouchEnd); el.addEventListener(“touchleave”, handleTouchLeave); el.addEventListener(“touchcancel”, handleTouchCancel);

Page 74: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

<div class=“slider”> <div class=“left-label”> ... </div> <div class=“slider-handle”> ... </div> <div class=“right-label”> ... </div> </div>

// Mouse el.addEventListener(“mousedown”, handleMouseDown); el.addEventListener(“mousemove”, handleMouseMove); el.addEventListener(“mouseup”, handleMouseUp); !

// Touch el.addEventListener(“touchstart”, handleTouchStart); el.addEventListener(“touchmove”, handleTouchMove); el.addEventListener(“touchend”, handleTouchEnd); el.addEventListener(“touchleave”, handleTouchLeave); el.addEventListener(“touchcancel”, handleTouchCancel);

Page 75: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

<div class=“slider”> <div class=“left-label”> ... </div> <div class=“slider-handle”> ... </div> <div class=“right-label”> ... </div> </div>

// Mouse el.addEventListener(“mousedown”, handleMouseDown); el.addEventListener(“mousemove”, handleMouseMove); el.addEventListener(“mouseup”, handleMouseUp); !

// Touch el.addEventListener(“touchstart”, handleTouchStart); el.addEventListener(“touchmove”, handleTouchMove); el.addEventListener(“touchend”, handleTouchEnd); el.addEventListener(“touchleave”, handleTouchLeave); el.addEventListener(“touchcancel”, handleTouchCancel);

// Keyboardel.addEventListener(“focus”, handleFocus);el.addEventListener(“blur”, handleBlur);el.addEventListener(“keydown”, handleKeyDown);

Page 76: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

<div class=“slider”> <div class=“left-label”> ... </div> <div class=“slider-handle”> ... </div> <div class=“right-label”> ... </div> </div>

// Mouse el.addEventListener(“mousedown”, handleMouseDown); el.addEventListener(“mousemove”, handleMouseMove); el.addEventListener(“mouseup”, handleMouseUp); !

// Touch el.addEventListener(“touchstart”, handleTouchStart); el.addEventListener(“touchmove”, handleTouchMove); el.addEventListener(“touchend”, handleTouchEnd); el.addEventListener(“touchleave”, handleTouchLeave); el.addEventListener(“touchcancel”, handleTouchCancel);

// Keyboardel.addEventListener(“focus”, handleFocus);el.addEventListener(“blur”, handleBlur);el.addEventListener(“keydown”, handleKeyDown);

Page 77: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ControlsNative slider

Page 78: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ControlsNative slider

<input type=“range” min=“0” max=“100” value=“1”>

Page 79: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ControlsNative slider

<input type=“range” min=“0” max=“100” value=“1”>

Browser Handles• Mouse events

• Touch events

• Keyboard events

• Tracking state

• Style updates for focus and blur

• Notifying observers

• Accessibility

Page 80: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ControlsNative slider

<input type=“range” min=“0” max=“100” value=“1”>

Browser Handles• Mouse events

• Touch events

• Keyboard events

• Tracking state

• Style updates for focus and blur

• Notifying observers

• Accessibility

Page 81: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ControlsCustom slider

<div> <div class=“left-label”> ... </div> <div class=“slider-handle”> ... </div> <div class=“right-label”> ... </div> </div>

// Mouse el.addEventListener(“mousedown”, handleMouseDown); el.addEventListener(“mousemove”, handleMouseMove); el.addEventListener(“mouseup”, handleMouseUp); !

// Touch el.addEventListener(“touchstart”, handleTouchStart); el.addEventListener(“touchmove”, handleTouchMove); el.addEventListener(“touchend”, handleTouchEnd); el.addEventListener(“touchleave”, handleTouchLeave); el.addEventListener(“touchcancel”, handleTouchCancel);

Page 82: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

<div> <div class=“left-label”> ... </div> <div class=“slider-handle”> ... </div> <div class=“right-label”> ... </div> </div>

ControlsCustom slider

// Mouse el.addEventListener(“mousedown”, handleMouseDown); el.addEventListener(“mousemove”, handleMouseMove); el.addEventListener(“mouseup”, handleMouseUp); !

// Touch el.addEventListener(“touchstart”, handleTouchStart); el.addEventListener(“touchmove”, handleTouchMove); el.addEventListener(“touchend”, handleTouchEnd); el.addEventListener(“touchleave”, handleTouchLeave); el.addEventListener(“touchcancel”, handleTouchCancel);

Page 83: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ARIAAccessible Rich Internet Applications

Page 84: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ARIACustom slider

<div> <div class=“left-label”> ... </div> <div class=“slider-handle”> ... </div> <div class=“right-label”> ... </div> </div>

// Mouse el.addEventListener(“mousedown”, handleMouseDown); el.addEventListener(“mousemove”, handleMouseMove); el.addEventListener(“mouseup”, handleMouseUp); !

// Touch el.addEventListener(“touchstart”, handleTouchStart); el.addEventListener(“touchmove”, handleTouchMove); el.addEventListener(“touchend”, handleTouchEnd); el.addEventListener(“touchleave”, handleTouchLeave); el.addEventListener(“touchcancel”, handleTouchCancel);

Page 85: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ARIACustom slider

<div role=“slider”> <div class=“left-label”> ... </div> <div class=“slider-handle”> ... </div> <div class=“right-label”> ... </div> </div>

// Mouse el.addEventListener(“mousedown”, handleMouseDown); el.addEventListener(“mousemove”, handleMouseMove); el.addEventListener(“mouseup”, handleMouseUp); !

// Touch el.addEventListener(“touchstart”, handleTouchStart); el.addEventListener(“touchmove”, handleTouchMove); el.addEventListener(“touchend”, handleTouchEnd); el.addEventListener(“touchleave”, handleTouchLeave); el.addEventListener(“touchcancel”, handleTouchCancel);

Page 86: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ARIACustom slider

<div role=“slider” aria-valuemin=“0” aria-valuemax=“100”> <div class=“left-label”> ... </div> <div class=“slider-handle”> ... </div> <div class=“right-label”> ... </div> </div>

// Mouse el.addEventListener(“mousedown”, handleMouseDown); el.addEventListener(“mousemove”, handleMouseMove); el.addEventListener(“mouseup”, handleMouseUp); !

// Touch el.addEventListener(“touchstart”, handleTouchStart); el.addEventListener(“touchmove”, handleTouchMove); el.addEventListener(“touchend”, handleTouchEnd); el.addEventListener(“touchleave”, handleTouchLeave); el.addEventListener(“touchcancel”, handleTouchCancel);

Page 87: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ARIACustom slider

<div role=“slider” aria-valuemin=“0” aria-valuemax=“100” aria-valuenow=“50”> <div class=“left-label”> ... </div> <div class=“slider-handle”> ... </div> <div class=“right-label”> ... </div> </div>

// Mouse el.addEventListener(“mousedown”, handleMouseDown); el.addEventListener(“mousemove”, handleMouseMove); el.addEventListener(“mouseup”, handleMouseUp); !

// Touch el.addEventListener(“touchstart”, handleTouchStart); el.addEventListener(“touchmove”, handleTouchMove); el.addEventListener(“touchend”, handleTouchEnd); el.addEventListener(“touchleave”, handleTouchLeave); el.addEventListener(“touchcancel”, handleTouchCancel);

Page 88: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ARIARetrofitting old content

Page 89: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ARIARetrofitting old content

<div style=“font-size: 18px”> All About Widgets </div>

Page 90: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ARIARetrofitting old content

<div style=“font-size: 18px” role=“heading” aria-level=“1”> All About Widgets </div>

Page 91: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ARIAImplicit roles

// Implicitly gets role=“heading” and aria-level=“1” <h1>All About Widgets</h1> !

Page 92: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

ARIAImplicit roles

// Implicitly gets role=“heading” and aria-level=“1” <h1>All About Widgets</h1> !

// Effectively the same as a <div> tag <h1 role=“presentation”>All About Widgets</h1> !

Page 93: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Focus Management

Page 94: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Focus Managementtabindex

Page 95: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Focus Managementtabindex

tabindex=“0”Focusable with JavaScript, in default tab order

tabindex=“-1”Focusable with JavaScript, not in default tab order

No tabindexNot focusable with JavaScript, not in default tab order** Except for native controls and links

Page 96: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Focus Managementtabindex

tabindex=“0”Focusable with JavaScript, in default tab order

tabindex=“-1”Focusable with JavaScript, not in default tab order

No tabindexNot focusable with JavaScript, not in default tab order** Except for native controls and links

Page 97: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Focus Managementtabindex

tabindex=“0”Focusable with JavaScript, in default tab order

tabindex=“-1”Focusable with JavaScript, not in default tab order

No tabindexNot focusable with JavaScript, not in default tab order** Except for native controls and links

Page 98: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Focus Managementtabindex

tabindex=“0”Focusable with JavaScript, in default tab order

tabindex=“-1”Focusable with JavaScript, not in default tab order

No tabindexNot focusable with JavaScript, not in default tab order** Except for native controls and links

Page 99: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 100: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 101: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 102: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 103: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 104: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 105: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

tabindex=“0”

tabindex=“0”

tabindex=“0”

tabindex=“0”

tabindex=“0”

tabindex=“0”

tabindex=“0”

tabindex=“0”

tabindex=“0”

tabindex=“0”

Page 106: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

tabindex=“0”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

Page 107: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

tabindex=“0”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

Page 108: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

tabindex=“0”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

Page 109: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

tabindex=“-1”

tabindex=“0”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

Page 110: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

tabindex=“-1”

tabindex=“-1”

tabindex=“0”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

Page 111: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

tabindex=“-1”

tabindex=“-1”

tabindex=“0”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

Page 112: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

tabindex=“-1”

tabindex=“-1”

tabindex=“0”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

tabindex=“-1”

Page 113: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 114: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Perceivable

Operable

Understandable

Robust

Page 115: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Demo

Page 116: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals
Page 117: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Summary

Page 118: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Summary

Perceivable, operable, understandable, robust

Page 119: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Summary

Perceivable, operable, understandable, robust

Use standard controls and semantic markup

Page 120: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Summary

Perceivable, operable, understandable, robust

Use standard controls and semantic markup

Use ARIA to fill the gaps

Page 121: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Summary

Perceivable, operable, understandable, robust

Use standard controls and semantic markup

Use ARIA to fill the gaps

Make sure controls are keyboard accessible

Page 122: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

More Information

Jake Behrens App Frameworks Evangelist [email protected]

Web Content Accessibility Guidelines http://www.w3.org/WAI/intro/wcag

ARIA Documentation http://www.w3.org/WAI/intro/aria

Combining Web Accessibility and Automation on iOS https://developer.apple.com/videos/wwdc/2011/

Apple Developer Forums http://devforums.apple.com

Page 123: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals

Related Sessions

• Accessibility on OS X Russian Hill Tuesday 2:00 PM

• Accessibility on iOS Russian Hill Tuesday 3:15 PM

• Web Inspector and Modern JavaScript Russian Hill Thursday 10:15 AM

Page 124: Improving the Accessibility and Usability of Complex Web … · 2016-07-08 · Usability of Complex Web Applications Session 516 Jesse Bunch Productivity ... Accessibility fundamentals