Thanks!
@saltnburnem
#DeveloperCommunity · #CodeMash
Thank
the
Sponsors
@saltnburnem
#DeveloperCommunity · #CodeMash
#CodeMash
@saltnburnem
#DeveloperCommunity · #CodeMash
#DeveloperCommunity
@saltnburnem
#DeveloperCommunity · #CodeMash
@saltnburnem
#DeveloperCommunity · #CodeMash
ADD ALT TEXT TO ANY PICS THAT ARE TWEETED!
Why?
@saltnburnem
#DeveloperCommunity · #CodeMash
Why?
@saltnburnem
#DeveloperCommunity · #CodeMash
@saltnburnem
#DeveloperCommunity · #CodeMash
Chris DeMars
Senior Developer Advocate
@saltnburnem
Free Agent!
@saltnburnem
#DeveloperCommunity · #CodeMash
@saltnburnem
#DeveloperCommunity · #CodeMash
- International Speaker
- Love spooky stuff
- Tattoo collector
About Me
@saltnburnem
#DeveloperCommunity · #CodeMash
Unlocking Inclusive Potential: Screen Reader Integration for Hybrid Mobile Apps
Question Time
@saltnburnem
#DeveloperCommunity · #CodeMash
1 BILLION!!!
20%-25%
@saltnburnem
#DeveloperCommunity · #CodeMash
Meh….
@saltnburnem
#DeveloperCommunity · #CodeMash
30%-40%
@saltnburnem
#DeveloperCommunity · #CodeMash
Buuuuuuuuuut…
@saltnburnem
#DeveloperCommunity · #CodeMash
no one at the org HAS a disability.
Internal
@saltnburnem
#DeveloperCommunity · #CodeMash
A11y
@saltnburnem
#DeveloperCommunity · #CodeMash
Numeronym
@saltnburnem
#DeveloperCommunity · #CodeMash
Numeronym
@saltnburnem
#DeveloperCommunity · #CodeMash
A c c e s s i b i l i t y
A
1
2
3
4
5
6
7
8
10
9
11
y
A11y
What is accessibility?
@saltnburnem
#DeveloperCommunity · #CodeMash
web
\/
Web accessibility means that websites, tools, and technologies are designed and developed so that people with disabilities can use them.
@saltnburnem
#DeveloperCommunity · #CodeMash
- https://www.w3.org/WAI/fundamentals/accessibility-intro/
Open Web
@saltnburnem
#DeveloperCommunity · #CodeMash
Inclusive Web
Web for all!
Web accessibility means that EVERYONE can use the Web.
@saltnburnem
#DeveloperCommunity · #CodeMash
Screen
Readers
@saltnburnem
#DeveloperCommunity · #CodeMash
@saltnburnem
#DeveloperCommunity · #CodeMash
Mac VO
TalkBack
@saltnburnem
#DeveloperCommunity · #CodeMash
https://ionicframework.com/
STOP THE DIV SHIT
@saltnburnem
#DeveloperCommunity · #CodeMash
@saltnburnem
#DeveloperCommunity · #CodeMash
<form>
<ul>
<li>
<label for="name">Name:</label>
<input type="text" id="name" name="user_name" />
</li>
<li>
<label for="mail">Email:</label>
<input type="email" id="mail" name="user_email" />
</li>
<li>
<label for="msg">Message:</label>
<textarea id="msg" name="user_message"></textarea>
</li>
<li>
<button type="submit">Send Message</button>
</li>
</ul>
</form>
H
T
M
L
@saltnburnem
#DeveloperCommunity · #CodeMash
<form>
<ion-list>
<ion-item>
<ion-input label="Name" placeholder="Enter name"></ion-input>
</ion-item>
<ion-item>
<ion-input label="Email" placeholder="Enter email" type="email"></ion-input>
</ion-item>
<ion-item>
<ion-input label="Default label" placeholder="Enter text"></ion-input>
</ion-item>
<ion-item>
<ion-textarea label="Message" placeholder="Type your message here..."></ion-textarea>
</ion-item>
<ion-item>
<ion-button>Default</ion-button>
</ion-item>
</ion-list>
</form>
I
o
n
i
c
Focus
@saltnburnem
#DeveloperCommunity · #CodeMash
Visual indicator that a component can be interacted with.
@saltnburnem
#DeveloperCommunity · #CodeMash
Focus
@saltnburnem
#DeveloperCommunity · #CodeMash
@saltnburnem
#DeveloperCommunity · #CodeMash
:focus {
/* STYLES GO HERE */
}
@saltnburnem
#DeveloperCommunity · #CodeMash
:focus {
outline: none;
}
:focus {
outline: 0;
}
@saltnburnem
#DeveloperCommunity · #CodeMash
:focus-within {
/* STYLES GO HERE */
}
:focus-visible {
/* STYLES GO HERE */
}
{
🥳
@saltnburnem
#DeveloperCommunity · #CodeMash
:focus-within {
/* STYLES GO HERE */
}
:focus-visible {
/* STYLES GO HERE */
}
{
🥳
ARIA
@saltnburnem
#DeveloperCommunity · #CodeMash
Accessible
@saltnburnem
#DeveloperCommunity · #CodeMash
Rich
Internet
Applications
defines a way to make Web content and Web applications more accessible to people with disabilities. It especially helps with dynamic content and advanced user interface controls developed with HTML, JavaScript, and related technologies.
@saltnburnem
#DeveloperCommunity · #CodeMash
- https://www.w3.org/WAI/standards-guidelines/aria/
Helps A.T. (Assistive Technologies) effectively navigate all parts of a page when semantics can’t be determined.
@saltnburnem
#DeveloperCommunity · #CodeMash
ONE RULE…TO RULE THEM ALL
@saltnburnem
#DeveloperCommunity · #CodeMash
Role Types
@saltnburnem
#DeveloperCommunity · #CodeMash
- Abstract
- Widget
- Document Structure
- Landmark
- Live Region
- Window Roles
States & Properties
@saltnburnem
#DeveloperCommunity · #CodeMash
- aria-label
- aria-labeldby
- aria-disabled
- aria-checked
- aria-required
- aria-hidden
- aria-live
States & Properties
@saltnburnem
#DeveloperCommunity · #CodeMash
- aria-label
- aria-disabled
- aria-checked
@saltnburnem
#DeveloperCommunity · #CodeMash
aria-label
<IonButton aria-label="Visit Twitter" onClick={navigateToTwitter}>
<IonIcon slot="icon-only" icon={logoTwitter} />
</IonButton>
@saltnburnem
#DeveloperCommunity · #CodeMash
aria-disabled
<IonItem>
<IonLabel position="floating">SSN</IonLabel>
<IonInput type="number" placeholder="This input is disabled" aria-disabled="true" disabled={true}></IonInput>
</IonItem>
@saltnburnem
#DeveloperCommunity · #CodeMash
aria-checked
<IonItem>
<IonLabel>Sausage</IonLabel>
<IonCheckbox
slot="start"
aria-checked={isChecked ? "true" : "false"}
checked={isChecked}
onIonChange={handleCheckboxToggle}
/>
</IonItem>
const [isChecked, setChecked] = useState(true);
const handleCheckboxToggle = () => {
setChecked(!isChecked);
};
SOOO Much info out there!
@saltnburnem
#DeveloperCommunity · #CodeMash
https://www.w3.org/TR/wai-aria/
Accessibility is NOT just a requirement, it is a MUST!
@saltnburnem
#DeveloperCommunity · #CodeMash
Recap
@saltnburnem
#DeveloperCommunity · #CodeMash
- Accessibility is a priority
- Use semantic markup - it's accessible by default
- Always test with a screen reader
- NEVER remove focus
- ONLY use ARIA when and IF you need it
- Put yourself in the users shoes
@saltnburnem
#DeveloperCommunity · #CodeMash
Chris DeMars
@saltnburnem
Resources
https://bit.ly/screen-reader-integration
Unlocking Inclusive Potential: Screen Reader Integration for Hybrid Mobile Apps
By Chris DeMars
Unlocking Inclusive Potential: Screen Reader Integration for Hybrid Mobile Apps
- 99