Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Accessibility Done Right
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Michelle Sanver
February 19, 2015
Programming
180
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Accessibility Done Right
Accessibility is about unified design.
Michelle Sanver
February 19, 2015
More Decks by Michelle Sanver
See All by Michelle Sanver
Messy data != Messy code
michellesanver
1
270
Advanced Serializing in PHP: Speed it up!
michellesanver
0
700
Using the Workflow component for e-commerce
michellesanver
2
570
An introduction to Graph Databases in PHP, using Neo4j
michellesanver
2
410
Graph Databases and PHP
michellesanver
0
390
Starting Open S
michellesanver
0
100
Neo4j is AWESOME!
michellesanver
0
840
Behat + Mink + PhantomJS = TEST ALL THE THINGS!
michellesanver
1
140
Behat+Mink+PhantomJS = Test ALL THE THINGS!
michellesanver
9
2.1k
Other Decks in Programming
See All in Programming
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
430
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
380
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7.2k
1B+ /day規模のログを管理する技術
broadleaf
0
120
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
780
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
820
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
1k
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.7k
Performance Engineering for Everyone
elenatanasoiu
0
250
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
250
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
240
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
630
Featured
See All Featured
Crafting Experiences
bethany
1
200
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Raft: Consensus for Rubyists
vanstee
141
7.6k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
610
Building an army of robots
kneath
306
46k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
230
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
Unsuck your backbone
ammeep
672
58k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Building Applications with DynamoDB
mza
96
7.1k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
400
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Transcript
@michellesanver Accessibility done right #phpuk
@michellesanver
@michellesanver WIIIIIIIE \o/ “Learn the most by sharing your knowledge
with others” - @coderabbi
@michellesanver Michelle Sanver
@michellesanver
@michellesanver Michelle Sanver Co-President of PHPWomen
@michellesanver PHPWomen 15 pounds or 30 dollars
@michellesanver Michelle Sanver Accent(s)!?
@michellesanver Michelle Sanver
@michellesanver I’m a backend developer.
@michellesanver Disclaimer There’s a lot more to accessibility.
@michellesanver After lunch story
@michellesanver Aron Aron is a blind programmer
@michellesanver Aron He really knows how to use a screenreader
@michellesanver Aron I don’t
@michellesanver Disclaimer This talk is not how I planned it
@michellesanver This talk is not about “people with disabilities”
@michellesanver This talk is about people who are using the
web.
@michellesanver Good Code Written with the user in mind
@michellesanver Assistive technology
@michellesanver Assistive technology Screen Readers
@michellesanver Assistive technology Text-To-Speech
@michellesanver Assistive technology Screen Magnifiers
@michellesanver Assistive technology Joysticks
@michellesanver Assistive technology Keyboards
@michellesanver Assistive technology Mobile Devices
@michellesanver Audience participation! What other assistive technology is there?
@michellesanver All technology is assistive technology
@michellesanver What if accessibility online was like accessibility IRL?
@michellesanver A typical ramp
@michellesanver A hotel layout
@michellesanver Hotel Layout: SunshinePHP I lost my glasses…
@michellesanver Hotel Layout: PHPUK I *really* hope I keep my
glasses
@michellesanver Accessibility is about Universal design
@michellesanver Universal Design “Universal design is the design of products
and environments to be usable by all people, to the greatest extent possible, without the need for adaptation or specialized design.” -Ron Mace
@michellesanver Universal Design Keywords equitable, flexible, simple, intuitive, low effort,
approachable, usable
@michellesanver Guidelines, rules and tools Keep your JavaScript ON!!!
@michellesanver Guidelines, rules and tools All functionality for all people
@michellesanver Content Gudelines
@michellesanver General Writing Use Consistent Language
@michellesanver General Writing Write out acronyms (At least the first
time you use them)
@michellesanver General Writing Be clear and concise
@michellesanver Headings Screen reader users can use heading structure to
navigate content.
@michellesanver Headings Keep your headers logical
@michellesanver Headings Don’t skip “h2” for design
@michellesanver Font-Face, Size and colour Easy to use sans-serif font
@michellesanver Font-Face, Size and colour Size: 12pt or more
@michellesanver Font-Face, Size and colour Size headers: Relative in order
@michellesanver Font-Face, Size and colour Heading 3: 14pt Heading 2:
16pt Heading 1: 18pt
@michellesanver Font-Face, Size and colour Keep a high contrast between
background and font colour.
@michellesanver Links Give your links unique and descriptive names
@michellesanver Tables Only for tabular data!
@michellesanver Tables For complex tables, provide a summary
@michellesanver Forms Label form fields!
@michellesanver Forms Should be “tabable”
@michellesanver Forms “Tabable” in visual order
@michellesanver Forms Use fieldsets for related fields
@michellesanver Forms Don’t use only * for required fields
@michellesanver Forms Use ARIA in *addition* to asterix ARIA required="true"
and ARIA required="false"
@michellesanver Forms After submitting Include errors in the page-title
@michellesanver Forms CAPTCHA is bad mmmkay http://webaim.org/blog/ spam_free_accessible_forms/
@michellesanver Colours Colourblindness
@michellesanver Colours Learning disabilities
@michellesanver Colours Satisfy both groups! Use colours *and* visual indicators
@michellesanver Audio & Video Alternative text version
@michellesanver Video Use Captions
@michellesanver Audio Include a text transcript
@michellesanver Audio & Video Also for non-auditory learners
@michellesanver Audio & Video If filling material for an already
descriptive article… No alternative needed
@michellesanver Audio & Video Do *not* autoplay!
@michellesanver Audio & Video Make sure you can pause.
@michellesanver Audio & Video Avoid flashes
@michellesanver Audio & Video 3 flashes in one second can
cause epileptic reactions.
@michellesanver Images Alt Text
@michellesanver Images Alt Text What you’re trying to convey!
@michellesanver Images Alt Text Can be replaced with a caption.
@michellesanver Images Alt Text Leave empty for decorative images
@michellesanver Images High contrast
@michellesanver Images For graphs, include a table if possible
@michellesanver Images Avoid images of text
@michellesanver WAI-Aria
@michellesanver WAI-Aria ARIA = Accessible Rich Internet Applications
@michellesanver Aria Roles
@michellesanver Aria: Roles “button” can be a fancy clickable element
@michellesanver Aria States and Properties
@michellesanver Aria examples Roles of "navigation" and "menu"
@michellesanver Aria examples Landmarks of "banner" and "main content"
@michellesanver Aria examples Alerts of "live" and "atomic"
@michellesanver Aria examples Forms
@michellesanver Dynamic content Accessible slide shows
@michellesanver Dynamic content Keyboard friendly video players NO AUTOPLAY PLZ
@michellesanver Aria: Live Regions Tell the user about dynamic updates!
@michellesanver Aria: Live Regions Polite or assertive
@michellesanver Aria: Live Regions Allows your JavaScript to be ON
@michellesanver Aria: Live Regions Twitter uses live regions NICELY
@michellesanver Aria: Live Regions: Twitter Has a dedicated accessibility team
@michellesanver Aria: Live Regions: Twitter Tweet field has tons of
information
@michellesanver Aria Example Twitter <div aria-labelledby="tweet-box-mini-home-profile-label" id="tweet-box-mini-home-profile" class="tweet-box rich-editor notie"
contenteditable="true" spellcheck="true" role="textbox" aria-multiline="true" dir="ltr" aria-autocomplete="list" aria-expanded="false" aria-owns=“typeahead-dropdown-6” > <div>What's happening?</div></div>
@michellesanver Aria Example Twitter <div aria-labelledby="tweet-box-mini-home-profile-label" id="tweet-box-mini-home-profile" class="tweet-box rich-editor notie"
contenteditable="true" spellcheck="true" role="textbox" aria-multiline="true" dir="ltr" aria-autocomplete="list" aria-expanded="false" aria-owns=“typeahead-dropdown-6” > <div>What's happening?</div></div>
@michellesanver Aria Example Twitter <div aria-labelledby="tweet-box-mini-home-profile-label" id="tweet-box-mini-home-profile" class="tweet-box rich-editor notie"
contenteditable="true" spellcheck="true" role="textbox" aria-multiline="true" dir="ltr" aria-autocomplete="list" aria-expanded="false" aria-owns=“typeahead-dropdown-6” > <div>What's happening?</div></div>
@michellesanver Aria Example Twitter <div aria-labelledby="tweet-box-mini-home-profile-label" id="tweet-box-mini-home-profile" class="tweet-box rich-editor notie"
contenteditable="true" spellcheck="true" role="textbox" aria-multiline="true" dir="ltr" aria-autocomplete="list" aria-expanded="false" aria-owns=“typeahead-dropdown-6” > <div>What's happening?</div></div>
@michellesanver Aria Example Twitter <div aria-labelledby="tweet-box-mini-home-profile-label" id="tweet-box-mini-home-profile" class="tweet-box rich-editor notie"
contenteditable="true" spellcheck="true" role="textbox" aria-multiline="true" dir="ltr" aria-autocomplete="list" aria-expanded="false" aria-owns=“typeahead-dropdown-6” > <div>What's happening?</div></div>
@michellesanver Aria Example Twitter <div aria-labelledby="tweet-box-mini-home-profile-label" id="tweet-box-mini-home-profile" class="tweet-box rich-editor notie"
contenteditable="true" spellcheck="true" role="textbox" aria-multiline="true" dir="ltr" aria-autocomplete="list" aria-expanded="false" aria-owns=“typeahead-dropdown-6” > <div>What's happening?</div></div>
@michellesanver Online Assessment Tools
@michellesanver Online Assessment Tools Wave http://wave.webaim.org/
@michellesanver Online Assessment Tools Color Filter http://colorfilter.wickline.org/
@michellesanver Online Assessment Tools Vischeck http://www.vischeck.com/vischeck/
@michellesanver Online Assessment Tools Color Contrast Checker http://webaim.org/resources/contrastchecker/
@michellesanver Online Assessment Tools For more W3C Web Accessibility Tools
list http://www.w3.org/WAI/ER/tools/
@michellesanver Wrapup
@michellesanver Wrapup Accessibility is *not* about assistive technology.
@michellesanver Wrapup Accessibility is about people.
@michellesanver Wrapup Accessibility is about universal design
@michellesanver Wrapup Accessibility means no workarounds
@michellesanver Wrapup Keep your JavaScript ON
@michellesanver Wrapup Follow guidelines
@michellesanver Wrapup Use WAI-Aria
@michellesanver Ask questions!
@michellesanver Thank you! Please rate my talk! https://joind.in/13371 (OMG, do
you see the 1337? :D)
@michellesanver Accessibility Let’s talk about it.