10 ¡Simple ¡Rules
for Making my Site Accessible
@ChrisAlbrecht @misshelenasue @Accessibots @AccessibotLilly
10 Simple Rules for Making my Site Accessible @Accessibots - - PowerPoint PPT Presentation
10 Simple Rules for Making my Site Accessible @Accessibots @AccessibotLilly @misshelenasue @ChrisAlbrecht 2 The Accessibots 10 Simple Rules for Making Your Site Accessible Accessibility tends to be an a<erthought for
for Making my Site Accessible
@ChrisAlbrecht @misshelenasue @Accessibots @AccessibotLilly
2
10 Simple Rules for Making Your Site Accessible
Accessibility ¡tends ¡to ¡be ¡an ¡a<erthought ¡for ¡most ¡of ¡us. ¡We ¡make ¡ excuses ¡like ¡"it ¡will ¡add ¡too ¡much ¡cost ¡to ¡the ¡project," ¡or ¡"I ¡can't ¡ make ¡Drupal ¡do ¡that," ¡or ¡it ¡may ¡be ¡that ¡we ¡simply ¡don't ¡know. ¡ That's ¡where ¡we ¡come ¡in.
3
Developer
LULLABOT // ACCESSIBOT MOUNTAIN CLIMBER // BEER DRINKER LOVER // DREAMER
4
Front-‑end ¡Developer
LULLABOT // ACCESSIBOT CODER // GAMER GOLDEN HEART // TECHNICOLOR SOUL
5
Strategy ¡// ¡Design ¡// ¡Development
We’re an interactive strategy, design, and development company. We create delightful experiences using Drupal and open source technologies.
6
(probably not deadly neurotoxin)
Why?
Why ¡make ¡websites ¡accessible?
Live Demo
Taking ¡web ¡accessibility ¡off ¡some ¡ sweet ¡jumps
When?
PrioriVzing ¡web ¡accessibility ¡to ¡ make ¡it ¡happen
Amazing Tools
Accessibility ¡tools ¡and ¡how ¡to ¡ use ¡them
How?
Including ¡everyone: ¡ ¡ it’s ¡so ¡easy!
Fabulous Prizes
mumble ¡mumble ¡some ¡exclusions ¡ apply ¡mumble
Who?
Beneficiaries ¡and ¡proponents ¡of ¡ web ¡accessibility
Resources
Code ¡snippets ¡and ¡resources ¡ that ¡you ¡can ¡use
Lesson ¡1
8
What’s the Point?
[need ¡numbers] ¡ Protect ¡against ¡lost ¡sales. ¡ It’s ¡the ¡law.
If There’s Time…
The ¡longer ¡you ¡wait, ¡the ¡harder ¡it ¡will ¡be ¡ to ¡implement. ¡ ¡Some ¡secVons ¡may ¡need ¡ complete ¡overhauls.
The Client Doesn’t Care
Doesn’t ¡care ¡or ¡doesn’t ¡know. ¡ ¡As ¡a ¡ developer ¡or ¡project ¡manager ¡it’s ¡your ¡ responsibility.
Who’s it Really For?
Color ¡blind, ¡Visually ¡Impaired, ¡Hearing ¡ Impaired, ¡CogniVve ¡differences, ¡Motor ¡ impaired
9
Hover ¡States ¡ & ¡Focus Are ¡You ¡There, ¡ Blog? ¡
Put ¡it ¡on ¡ My ¡Tab Painless ¡Page ¡ ¡ Titles You're ¡Out ¡of ¡ Order! ¡
Out ¡of ¡Order! Keep ¡Your ¡ Focus NO ¡CAPTCHAS ¡ If ¡You ¡Can Alts, ¡Titles ¡and ¡ Bare ¡Text ¡
Skip ¡it!
10
Provide a Textual Alternative to Non-Text Content
11
Provide a Textual Alternative to Non-Text Content
12
Provide a Textual Alternative to Non-Text Content
13
Provide a Textual Alternative to Non-Text Content
<a ¡href="/about-‑us"> ¡ ¡ ¡ ¡<img ¡src="images/accessibots.png" ¡alt=“The ¡Accessibots" ¡/> ¡ </a> ¡
Amazing ¡Article ¡Ever”> ¡ ¡ ¡ ¡The ¡Most ¡Amazing ¡Article ¡Ever ¡ </a> ¡
14
Provide a Textual Alternative to Non-Text Content
<a ¡href="/about-‑us" ¡title="Read ¡about ¡Helena ¡& ¡Chris”> ¡ ¡ ¡ ¡<img ¡src="images/accessibots.png" ¡alt=“The ¡Accessibots" ¡/> ¡ </a> ¡
article ¡at ¡Awesome.com”> ¡ ¡ ¡ ¡The ¡Most ¡Amazing ¡Article ¡Ever ¡ </a> ¡
¡ ¡ ¡Read ¡The ¡Most ¡Amazing ¡Article ¡Ever ¡Here ¡ </a> ¡
15
Page titles that get to the point
16
Page titles that get to the point
17
Page titles that get to the point
18
Page titles that get to the point
My ¡Awesome ¡Site ¡| ¡Home ¡ My ¡Awesome ¡Site ¡| ¡About ¡ My ¡Awesome ¡Site ¡| ¡Buy ¡Stuff ¡
My ¡Awesome ¡Site ¡ My ¡Awesome ¡Site ¡
19
Page titles that get to the point
Home ¡| ¡My ¡Awesome ¡Site ¡ About ¡| ¡My ¡Awesome ¡Site ¡ Buy ¡Stuff ¡| ¡My ¡Awesome ¡Site ¡
20
‘Get out of Jail Free’ card for Keyboard Users
No ¡one ¡wants ¡to ¡hear ¡the ¡same ¡links ¡read ¡over ¡and ¡over ¡ It ¡takes ¡a ¡long ¡Vme ¡to ¡page ¡through ¡to ¡get ¡to ¡the ¡content
21
‘Get out of Jail Free’ card for Keyboard Users
22
‘Get out of Jail Free’ card for Keyboard Users
23
‘Get out of Jail Free’ card for Keyboard Users
24
Making interactive elements that don’t suck
25
Making interactive elements that don’t suck
26
Making interactive elements that don’t suck
.myclass ¡{ ¡ ¡ ¡ ¡&:hover ¡{ ¡ ¡ ¡ ¡ ¡ ¡color: ¡red; ¡ ¡ ¡ ¡} ¡ ¡} ¡
27
Making interactive elements that don’t suck
.myclass ¡{ ¡ ¡ ¡ ¡&:hover, ¡ ¡ ¡ ¡&:focus ¡{ ¡ ¡ ¡ ¡ ¡ ¡color: ¡red; ¡ ¡ ¡ ¡} ¡ ¡} ¡
28
Everything clickable should be tab accessible
29
Everything clickable should be tab accessible
30
Everything clickable should be tab accessible
<div ¡class=“hamburger-‑icon”></div> ¡
31
Everything clickable should be tab accessible
<a ¡class=“hamburger-‑icon”></a> ¡
32
Using element hierarchies properly
This ¡makes ¡it ¡difficult ¡for ¡screenreader ¡users ¡to ¡navigate ¡ your ¡page ¡efficiently
33
Using element hierarchies properly
34
Using element hierarchies properly
Configure ¡templates ¡to ¡use ¡proper ¡headings. ¡ Views, ¡panels ¡and ¡blocks ¡all ¡allow ¡this ¡easily ¡ If ¡you ¡need ¡a ¡more ¡specific ¡template, ¡add ¡a ¡template ¡suggesVon ¡ in ¡a ¡preprocess ¡hook. ¡ Try ¡to ¡uVlize ¡CSS ¡layout ¡tools ¡like ¡flexbox ¡to ¡arrange ¡elements ¡on ¡ the ¡screen ¡visually ¡while ¡maintaining ¡the ¡proper ¡source ¡order. ¡ Create ¡"readable" ¡versions ¡of ¡complex ¡interacVons ¡such ¡as ¡ slideshows ¡and ¡graphical ¡data ¡and ¡use ¡skip ¡links ¡to ¡allow ¡screen ¡ readers ¡to ¡"jump" ¡to ¡the ¡readable ¡informaVon. ¡
35
Using element hierarchies properly
<h2>Me ¡& ¡My ¡Crappy ¡Code</h2> ¡ <p ¡class=“bigger”>How ¡do ¡I ¡feel ¡about ¡web ¡accessibility?</p> ¡ <div>I ¡love ¡<h1>coding!</h1> ¡I ¡can’t ¡wait ¡to ¡learn ¡accessibility ¡so ¡that ¡ my ¡sites ¡aren’t ¡<h3>annoying</h3>! ¡ </div> ¡ <p ¡class=“bigger”>I ¡have ¡no ¡idea ¡how ¡to ¡do ¡this.</p> ¡ <div>What ¡a ¡<h1>pain</h1> ¡for ¡everybody.</div> ¡
36
Using element hierarchies properly
<h1>Me ¡& ¡My ¡Friendly ¡Code</h1> ¡ <h2>How ¡do ¡I ¡feel ¡about ¡web ¡accessibility?<h2> ¡ <p>I ¡love ¡<strong>coding!</strong> ¡I’m ¡so ¡glad ¡I ¡learned ¡web ¡accessibility ¡so ¡ that ¡my ¡sites ¡aren’t ¡<i>annoying</i> ¡ </p> ¡ <h2>Why ¡is ¡friendly ¡code ¡great?<h2> ¡ <p>A ¡li]le ¡more ¡informaVon ¡about ¡doing ¡it ¡right.<p> ¡
37
When to Hide, and When to Go Invisible
Screen ¡readers ¡skip ¡big ¡chunks ¡of ¡content ¡and ¡can’t ¡ interpret ¡complex ¡components.
38
When to Hide, and When to Go Invisible
39
When to Hide, and When to Go Invisible
Use ¡Drupal’s ¡‘.element-‑invisible’ ¡to ¡hide ¡content ¡that ¡should ¡not ¡ be ¡visible, ¡but ¡sVll ¡be ¡read. ¡ Look ¡for ¡accessible ¡jQuery ¡plugins ¡that ¡support ¡Aria ¡Tags ¡ h]p://hanshillen.github.io/jqtest ¡ h]ps://plugins.jquery.com/tag/accessibility ¡ Use ¡custom ¡jQuery ¡events ¡to ¡override ¡the ¡`display: ¡none` ¡css.
40
When to Hide, and When to Go Invisible
Bad ¡
¡ ¡<h3>Chapter ¡1</h3> ¡ ¡ ¡<div ¡class=“block1”>CONTENT!</div> ¡ ¡<h3>Chapter ¡2</h3> ¡ ¡ ¡<div ¡class=“block2” ¡style=“display: ¡ none”>INVISIBLE ¡CONTENT!</div> ¡ </div>
41
When to Hide, and When to Go Invisible
Good ¡
¡ ¡<h3>Chapter ¡1</h3> ¡ ¡ ¡<div ¡class=“block1”>CONTENT!</div> ¡ ¡<h3>Chapter ¡2</h3> ¡ ¡ ¡<div ¡class=“block2 ¡element-‑invisible”>INVISIBLE ¡ CONTENT!</div> ¡ </div>
42
When to Hide, and When to Go Invisible
Bad ¡
43
When to Hide, and When to Go Invisible
Good ¡
¡ ¡ ¡ ¡var ¡$this ¡= ¡$(this); ¡ ¡ ¡ ¡ ¡ ¡ ¡$this.slideUp(duration, ¡function() ¡{ ¡ ¡ ¡ ¡ ¡ ¡ ¡$this.addClass('element-‑invisble').show(); ¡ ¡ ¡ ¡ ¡}); ¡ ¡};
44
Because not being able to see does not prove that you’re not a human.
It’s ¡rude ¡to ¡tell ¡people ¡that ¡they ¡aren’t ¡human ¡because ¡ they ¡can’t ¡pass ¡a ¡vision ¡test. ¡ CAPTCHAs ¡make ¡your ¡site ¡inaccessible ¡to ¡valid ¡users.
45
Because not being able to see does not prove that you’re not a human.
46
Because not being able to see does not prove that you’re not a human.
47
Because not being able to see does not prove that you’re not a human.
48
Focus Indicators Need to Stay On
Sighted ¡keyboard ¡users ¡need ¡those ¡visual ¡focus ¡ indicators ¡to ¡be ¡able ¡to ¡tell ¡where ¡they ¡are ¡on ¡the ¡page.
49
Focus Indicators Need to Stay On
50
Focus Indicators Need to Stay On
51
Wave ¡Tool ¡ ¡ h]p://wave.webaim.org/ Color ¡Oracle ¡ ¡ h]p://colororacle.org/ Quail ¡ h]p://quailjs.org/ ¡ Drupal ¡Accessibility ¡Module ¡ h]ps://www.drupal.org/project/accessibility
52
h]p://www.accessibots.io
Chris Albrecht
Developer ¡// ¡Technical ¡PM @ChrisAlbrecht
Lilly Bot
Mascot @accessibotlilly
Helena Zubkow
Front-‑End ¡Developer @misshelenasue