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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
680
Using the Workflow component for e-commerce
michellesanver
2
550
An introduction to Graph Databases in PHP, using Neo4j
michellesanver
2
380
Graph Databases and PHP
michellesanver
0
370
Starting Open S
michellesanver
0
95
Neo4j is AWESOME!
michellesanver
0
820
Behat + Mink + PhantomJS = TEST ALL THE THINGS!
michellesanver
1
130
Behat+Mink+PhantomJS = Test ALL THE THINGS!
michellesanver
9
2.1k
Other Decks in Programming
See All in Programming
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
200
条件判定に名前、つけてますか? #phperkaigi #c
77web
2
650
Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー
n4mlz
0
230
米国のサイバーセキュリティタイムラインと見る Goの暗号パッケージの進化
tomtwinkle
2
640
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
410
OTP を自動で入力する裏技
megabitsenmzq
0
120
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.1k
メッセージングを利用して時間的結合を分離しよう #phperkaigi
kajitack
3
270
How to stabilize UI tests using XCTest
akkeylab
0
140
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
150
Claude Code Skill入門
mayahoney
0
410
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
570
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.1k
Deep Space Network (abreviated)
tonyrice
0
94
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
52k
Designing for Performance
lara
611
70k
Un-Boring Meetings
codingconduct
0
230
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
790
Test your architecture with Archunit
thirion
1
2.2k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
290
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
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.