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 360 - Web -> Mobile
Search
Ankita Kulkarni
May 24, 2019
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Accessibility 360 - Web -> Mobile
Ankita Kulkarni
May 24, 2019
More Decks by Ankita Kulkarni
See All by Ankita Kulkarni
5 things you must know to take your Next app to the next level
kulkarniankita09
0
310
Oh Hello Apollo client, Goodbye Redux!
kulkarniankita09
1
520
Lessons learned: Architecting react apps
kulkarniankita09
1
300
Beyond the React Native Benchmark
kulkarniankita09
0
130
Make your React Native apps accessible 🙌
kulkarniankita09
0
270
Let's fight - Redux side-effects showdown
kulkarniankita09
0
230
The Art of Humanizing Pull Requests
kulkarniankita09
0
750
Being Agile - Scrum and Extreme Programming
kulkarniankita09
0
140
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
ラッコキーワード サービス紹介資料
rakko
1
3.6M
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
390
Done Done
chrislema
186
16k
Claude Code のすすめ
schroneko
67
230k
From π to Pie charts
rasagy
0
210
The Cost Of JavaScript in 2023
addyosmani
55
10k
How to train your dragon (web standard)
notwaldorf
97
6.7k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
The Language of Interfaces
destraynor
162
27k
Statistics for Hackers
jakevdp
799
230k
Transcript
@kulkarniankita9 Accessibility 360 Web -> Mobile Ankita Kulkarni, Solutions Architect,
Rangle.io
@kulkarniankita9 How many of you have worked with a11y in
web apps? ✋
@kulkarniankita9 How many of you have worked with a11y in
mobile apps? ✋
@kulkarniankita9 Hi, I’m Ankita!
@kulkarniankita9 Today… 2 Dev Common components Design system Examples 3
The takeaway Testing Lessons learned Talk to me 1 The What! How voice over works? Key a11y properties Semantics
@kulkarniankita9 We need to make this native world a better
place for everyone
@kulkarniankita9 From 2009 to 2014, mobile screen reader usage increased
from 12% to 82% of people who use screen readers, a huge increase in just five years.
@kulkarniankita9 How does voiceover work?
@kulkarniankita9 Instagram voice-over
@kulkarniankita9 Key considerations <Text> Lorem ipsum </Text> Text Button States
Keyboards Screen Sizes CONTINUE CONTINUE
@kulkarniankita9 Web Mobile Semantics <p>Heading1</p> <Text>Heading1</Text> <div>{…}</div> <View>{…}</View> <input type=“text”>…</input>
<TextInput>…</TextInput> <button onClick>..</button <Button>…</Button>
@kulkarniankita9 Make components accessible
@kulkarniankita9 export interface IButtonProps { onPress: () => void; accessibilityLabel:
string; accessibilityHint?: string; accessibilityRole: string; text: string; buttonStyle?: any; isDisabled?: boolean; buttonTheme?: any; color: keyof typeof IButtonColors; } Button props
@kulkarniankita9 Native elements
@kulkarniankita9 Build a design system of reusable accessible components
@kulkarniankita9 sooo… is my entire app accessible?
Show me some codeeee..? @kulkarniankita9
@kulkarniankita9 Mobile Web ariaLabel and a11yLabel <p aria-label=“Lorem ipsum”>
Lorem ipsum dolor </p> <Text accessibilityLabel=“Lorem ipsum”> Lorem ipsum dolor </Text>
@kulkarniankita9 Mobile Web accessibilityStates const selected = false; if (checked)
{ selected = true; } <input type="checkbox" tabindex=“0" aria-checked={a11yStates} onClick={() => {}}> <label>Jon Snow</> </> if (disabled) { a11yStates.push('disabled'); } <Touchable accessibilityLabel=“Jon Snow” accessibilityStates={a11yStates} accessibilityRole=“button" disabled={disabled} onPress={() => {}}> <View><Text>Jon Snow</></> </Touchable>
@kulkarniankita9 Mobile Web role & accessibilityRole <Card> <img src=“..” role=“image”
/> <h1 role=“header”> DESTINATION</> <h4 role=“header”> Madison, WI</> <p> Founded in 1829….</> </> <Card> <Image src=“..” accessibilityRole=“image” /> <Text accessibilityRole=“header”> DESTINATION</> <Text accessibilityRole=“header”> Madison, WI</> <Text>Founded in 1829….</> </>
@kulkarniankita9 Mobile Web Touchable <button className=“icon-button" aria-label=“Add to favourites" aria-pressed="false">
</> <TouchableWithoutFeedback accessibilityComponentType= “button” onPress={onPress}> <View> <Image accessibilityLabel= “Add to favourites” /> </> </>
@kulkarniankita9 A lot of companies want to automate accessibility to
hit their target audience
@kulkarniankita9 Web Mobile Testing tools Axe Accessibility Inspector Accessibility Scanner
Wave Voiceover Talkback
@kulkarniankita9 Testing tools
@kulkarniankita9 a11y linter https://github.com/FormidableLabs/eslint-plugin-react-native-a11y https://github.com/evcohen/eslint-plugin-jsx-a11y
@kulkarniankita9 It’s no substitute for real user feedback
@kulkarniankita9 Reakit example
@kulkarniankita9 Animations
@kulkarniankita9 Best practices • Ensure animations don’t flash too much
• There is a setting to disable animations • Slow it down when “reduce motion” setting is activated
@kulkarniankita9 Lessons learned
@kulkarniankita9 a11y properties in open source libraries
@kulkarniankita9 a11y is different in iOS and Android
@kulkarniankita9 Use Storybook for tracking a11y components
@kulkarniankita9 a11y checklist
@kulkarniankita9 a11y audit , • Get an a11y expert to
perform the audit • Automate testing for a11y • Use Lighthouse for web
@kulkarniankita9 This is pretty much the end.. Questions? Comments? Feedback…make
it positive—
@kulkarniankita9 You did it
@kulkarniankita9 Resources Pokemon shock https://kotaku.com/the-banned-pokemon- episode-that-gave-children-seizures-5757570
@kulkarniankita9 Resources Good a11y example https://reakit.io/docs/button/
@kulkarniankita9 Resources a11y checklist https://frontendchecklist.io/#section- accessibility
@kulkarniankita9 Resources Mobile usage https://webaim.org/projects/ screenreadersurvey5/#mobileusage