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
1
170
Accessibility Done Right
Accessibility is about unified design.
Michelle Sanver
February 19, 2015
Tweet
Share
More Decks by Michelle Sanver
See All by Michelle Sanver
Messy data != Messy code
michellesanver
1
250
Advanced Serializing in PHP: Speed it up!
michellesanver
0
670
Using the Workflow component for e-commerce
michellesanver
2
540
An introduction to Graph Databases in PHP, using Neo4j
michellesanver
2
370
Graph Databases and PHP
michellesanver
0
360
Starting Open S
michellesanver
0
90
Neo4j is AWESOME!
michellesanver
0
810
Behat + Mink + PhantomJS = TEST ALL THE THINGS!
michellesanver
1
120
Behat+Mink+PhantomJS = Test ALL THE THINGS!
michellesanver
9
2k
Other Decks in Programming
See All in Programming
CSC307 Lecture 03
javiergs
PRO
1
490
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
120
OCaml 5でモダンな並列プログラミングを Enjoyしよう!
haochenx
0
140
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
250
Patterns of Patterns
denyspoltorak
0
1.4k
Implementation Patterns
denyspoltorak
0
280
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
0
910
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
4
320
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
1.1k
CSC307 Lecture 06
javiergs
PRO
0
680
高速開発のためのコード整理術
sutetotanuki
1
390
Featured
See All Featured
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
55
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
160
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
49k
Mind Mapping
helmedeiros
PRO
0
78
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
110
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
170
ラッコキーワード サービス紹介資料
rakko
1
2.2M
How to Ace a Technical Interview
jacobian
281
24k
The SEO identity crisis: Don't let AI make you average
varn
0
64
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.