Slide 1

Slide 1 text

Accessibility @ Modern Web + RobDodson @rob_dodson

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

Perf is crucial for good UX

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Disability is not just a health problem. It is a complex phenomenon, reflecting the interaction between features of a person’s body and features of the society in which he or she lives. - World Health Organization source • who.int/topics/disabilities/en/

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Accessibility is good UX

Slide 10

Slide 10 text

Diversity of users Focus Semantics

Slide 11

Slide 11 text

Diversity of users

Slide 12

Slide 12 text

About 15% of the world's population lives with some form of disability - World Health Organization source • who.int/disabilities/world_report/2011/report

Slide 13

Slide 13 text

1 Billion People

Slide 14

Slide 14 text

visual auditory cognitive motor

Slide 15

Slide 15 text

Visual A broad range from no vision (total blindness) to limited or low vision

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Motor Users may prefer not to use a mouse, have RSI, or physical paralysis and limited range of motion

Slide 19

Slide 19 text

Motor Users may prefer not to use a mouse, have RSI, or physical paralysis and limited range of motion

Slide 20

Slide 20 text

Auditory May be completely deaf or hard of hearing

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Cognitive A broad range encompassing ADHD, dyslexia, and autism just to name a few

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

visual auditory cognitive motor

Slide 25

Slide 25 text

WCAG 2.0 Web Content Accessibility Guidelines 2.0 provide a system for assessing the accessibility of any app w3.org/TR/WCAG20

Slide 26

Slide 26 text

WebAIM WCAG 2.0 Checklist webaim.org/standards/wcag/checklist

Slide 27

Slide 27 text

Nail the checklist

Slide 28

Slide 28 text

Focus

Slide 29

Slide 29 text

Focus determines where keyboard events go in the page.

Slide 30

Slide 30 text

Implicitly Focusable Native elements like input, button, and select get focusability for free! Click Me! Password Aisle Seat

Slide 31

Slide 31 text

Not all elements are focusable

Slide 32

Slide 32 text

Slide 33

Slide 33 text

Slide 34

Slide 34 text

Don’t fight the platform!

Slide 35

Slide 35 text

tabindex Configure the focus behavior of an element

Slide 36

Slide 36 text

tabindex=“0” In the natural tab order and can be programmatically focused by calling focus() Settings
Settings

Slide 37

Slide 37 text

tabindex=“0” In the natural tab order and can be programmatically focused by calling focus() Settings
Settings

Slide 38

Slide 38 text

tabindex=“0” In the natural tab order and can be programmatically focused by calling focus()
Settings
Settings

Slide 39

Slide 39 text

tabindex=“-1” Not in the natural tab order but can be programmatically focused by calling focus(). Useful for “roving tabindex”
Item 1
Item 2
Item 3
Item 1 Item 2 Item 3

Slide 40

Slide 40 text

tabindex=“-1”
Item 1
Item 2
Item 3
Item 1 Item 2 Item 3 focus(); Not in the natural tab order but can be programmatically focused by calling focus(). Useful for “roving tabindex”

Slide 41

Slide 41 text

tabindex=“5” In the natural tab order and jumps ahead of everything else. Generally an anti-pattern.

Slide 42

Slide 42 text

ARIA Design Patterns w3.org/TR/wai-aria-practices-1.1

Slide 43

Slide 43 text

Use the keyboard patterns from the ARIA Authoring guide to ensure an accessible experience

Slide 44

Slide 44 text

Semantics

Slide 45

Slide 45 text

Affordances Affordances offer or afford a person the opportunity to perform an action.

Slide 46

Slide 46 text

Programmatic semantics
Search
Preferred seat type No preference Aisle seat Window seat pop-up button value: “No preference” name: “Preferred seat type” state: collapsed

Slide 47

Slide 47 text

Programmatic semantics
Search
Preferred seat type No preference Aisle seat Window seat Role: “pop-up button” Name: “Preferred seat type” State: collapsed Value: “No preference”

Slide 48

Slide 48 text

GUI accessibility tree assistive technology user application

Slide 49

Slide 49 text

Implicit Semantics Similar to focus, native elements get rich semantics for free Click Me! Password Aisle Seat “pop-up button” “button” “secure edit text”

Slide 50

Slide 50 text

Generic elements have generic semantics
Sign Up
SIGN UP “group”

Slide 51

Slide 51 text

Don’t fight the platform Use native elements for free programmatic semantics

Slide 52

Slide 52 text

WAI-ARIA The Web Accessibility Initiative - Accessible Rich Internet Applications (ARIA) specification adds the ability to modify and enhance the semantic meaning of elements in the DOM

Slide 53

Slide 53 text

ARIA does NOT change behavior

Slide 54

Slide 54 text

Sign Up ✔ Sign Up …

Slide 55

Slide 55 text

ARIA. All of it…

Slide 56

Slide 56 text

ARIA Design Patterns

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

Sign Up ✔ Sign Up …

Slide 59

Slide 59 text

Sign Up ✔ Sign Up role: checkbox state: unchecked

Slide 60

Slide 60 text

Sign Up ✔ Sign Up role: checkbox state: checked

Slide 61

Slide 61 text

aria-label A string to be used as the accessible label. Overrides any other native labelling mechanism. “button”

Slide 62

Slide 62 text

aria-label A string to be used as the accessible label. Overrides any other native labelling mechanism. “Main Menu, button”

Slide 63

Slide 63 text

aria-labelledby A reference to an element (or elements) which will act as an accessible label. Overrides any other labelling mechanism including aria-label. “Shop Now, button”
Men’s Outerwear
Shop Now

Slide 64

Slide 64 text

aria-labelledby A reference to an element (or elements) which will act as an accessible label. Overrides any other labelling mechanism including aria-label. “Men’s Outerwear, Shop Now, button”
Men’s Outerwear
Shop Now

Slide 65

Slide 65 text

Sign Up ✔ Sign Up role: checkbox state: checked

Slide 66

Slide 66 text

Sign Up ✔ Sign Up role: checkbox name: “Sign Up” state: checked

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

Review!

Slide 69

Slide 69 text

Nail the checklist Consider the broad range of users. Work with WCAG 2.0 and the Web AIM checklist to ensure your application is accessible.

Slide 70

Slide 70 text

Ensure focus Leverage native elements like button for easy focus wins. Use tabindex to make controls operable and to manage focus in your app.

Slide 71

Slide 71 text

Offer affordances Use native elements with built- in, rich semantics. Refer to ARIA Authoring Practices doc when you need to add your own custom semantics.

Slide 72

Slide 72 text

bit.ly/web-a11y

Slide 73

Slide 73 text

@rob_dodson Rob Dodson Thank You Images created by Julien Deveaux, Co-Effect Creative, Michael Wohlwend, Maico Amorim, Yu Luck, Andrey Vasiliev, Till Teenck, Gregor Črešnar, Wes Breazell, Blaise Sewell, Dustin’s Words from the Noun project