SlideShare a Scribd company logo
1 of 41
Accessibility with SPA's
CanberraJS
The web landscape
We're using more complex Javascript frontend frameworks to generate
web content. Accessibility isn't made more difficult, the same rules
still apply.
Why accessibility?
Because it’s the right thing to do
Because its not hard or expensive
Because of Government, Government digital services have to be
accessible to WCAG 2.0 AA
A recap on WCAG 2/2.1
International best practice standard to make websites accessible
A
AA
AAA
most comprehensive and requires more work to
bring a website up to speed
basic level of accessibility it'll help some people and it
doesn’t take much overhead
Is the compromise between effort and accessibility
Websites
Generally straightforward to make a website accessible. They're static
with little functionality.
Web applications
More challenging to make accessible. Handling complex functionality
means we need to put greater emphasis into adding the accessibility.
Mythbusting
Javascript frameworks don't
make a web application any
more or any less accessible
Accessibility in React
"React fully supports building accessible websites, often by using
standard HTML techniques"
https://reactjs.org/docs/accessibility.html
Accessibility in Angular 7
"Create accessible applications with ARIA-enabled components,
developer guides, and built-in a11y test infrastructure"
https://angular.io/features
Beware
Even though a framework has good support for accessibility doesn’t
mean you don’t need to do anything.
Implementation is key
The accessibility is solely down to how it's implemented, if your code
has poor accessibility support the outcome won't be great.
Single Page Apps
Are more complicated, which means the accessibility has to be more
involved.
Prioritising effort
Focus less about colour contrast, link text and correct heading
structure.
Rules to develop to
1. Write HTML according to specifications
2. Make elements focusable from the keyboard
3. Page updates need to be announced
1. Write HTML according to specs
Use elements the correct way, if you need a button use a button.
Building your own elements
Means you need to add accessibility behaviour back onto the controls,
it’s a massive headache and it takes time. Do you need to make
custom controls?
Building your own elements
<span>Click Me</span>
<div>Click Me</div>
SPAN and DIV elements have no default behaviour, it needs to be built
in.
Building a button
<div role="button">Click Me</div>
+ Add the ARIA role
Building a button
<div role="button" tabindex="0">Click Me</div>
+ Add the ARIA role
+ Add the tabindex
Building a button
<div role="button" tabindex="0">Click Me</div>
+ Add the ARIA role
+ Add the tabindex
+ Add the style change
Or just use a button
<button>Click Me</button>
Semantic elements
They just work, assistive technology interprets them correctly. No extra
work is needed.
The trade off
Semantic interface = works as intended
Custom interface = adding accessibility back
2. Keyboard focusable
Make everything focusable from the keyboard, some people may use
the keyboard over the mouse.
Use the tabindex attribute wisely
Can be used to reorder the entire keyboard tab sequence if not careful.
If you use regular elements in a regular way, this behaviour is already
included by default.
Positioning
<a href="blah.html tabindex="10">blah</a>
Refers to the tab position of the element on the page
Pick a number
tabindex="0" element appears in the regular keyboard sequence
tabindex="-1" element is hidden from the keyboard sequence
tabindex="1" + goodbye regular keyboard sequence!
Don’t do this
<a href="blah.html" tabindex="1">blah</a>
Or this
<a href="blah.html" tabindex="10">blah</a>
Or even this
<a href="blah.html" tabindex="1010">blah</a>
Tabindex of +1 and above
<a href="blah.html"
tabindex="1">blah</a>
3. Updates need to be announced
Announce the change if the page updates.
What's it doing?
SPA's may not always trigger a full page refresh, if a user is vision
impaired they won't know a change has occurred.
Introducing ARIA
Set of attributes which generate behaviour in assistive technology to
announce changes to help a web application work better for AT users.
Need to announce an update?
An aria live region can trigger a screen reader to announce new
content.
Need to announce an update?
<div aria-live="polite">
Content to announce
</div>
ARIA live region
q
Content updated
Updating page content
static content
"Content updated"X
Automate the heavy lifting
Reach Router for React
"Router manages the focus of your app on route transitions. There’s
nothing you have to do about it, it just happens."
LiveAnnouncer Angular Material
"LiveAnnouncer is used to announce messages for screen-reader users
using an aria-live region"
This is just scratching the surface
Accessibility is complex and challenging, different browsers and screen
readers will affect end results.
Focus on the hard and difficult
• Use semantic elements
• Don’t alter the tabindex
• Announce updates with ARIA live regions
For more information
Get the code at github.com/canaxess/presentations
navigate to CanberraJS
www.canaxess.com.au
ross.mullen@canaxess.com.au
@MrRossMullen

More Related Content

What's hot

EXTERNAL IMAP CLIENT –IOS
EXTERNAL IMAP CLIENT –IOSEXTERNAL IMAP CLIENT –IOS
EXTERNAL IMAP CLIENT –IOSjohnsmith4989
 
Using the Adobe Connect API - finding unused recordings
Using the Adobe Connect API - finding unused recordingsUsing the Adobe Connect API - finding unused recordings
Using the Adobe Connect API - finding unused recordingsbwebster719
 
Online mobile game server use Firebase realtime aatabase
Online mobile game server use Firebase realtime aatabaseOnline mobile game server use Firebase realtime aatabase
Online mobile game server use Firebase realtime aatabaseNguyễn Bá Thành
 
Working with APIs as a no-coder - No Code Conf 2019 Demo Theater
Working with APIs as a no-coder - No Code Conf 2019 Demo TheaterWorking with APIs as a no-coder - No Code Conf 2019 Demo Theater
Working with APIs as a no-coder - No Code Conf 2019 Demo TheaterWebflow
 
Patron Power Platform Community November 2021 Webinar
Patron Power Platform Community November 2021 WebinarPatron Power Platform Community November 2021 Webinar
Patron Power Platform Community November 2021 WebinarRobert Crane
 
How to submit sitemap by Ravi
How to submit sitemap by RaviHow to submit sitemap by Ravi
How to submit sitemap by RaviNeha Nayak
 
Creating an app on Ribily Part 3 flow creation
Creating an app on Ribily Part 3 flow creationCreating an app on Ribily Part 3 flow creation
Creating an app on Ribily Part 3 flow creationSagar Kalkhair
 
Forms + Zaps = No Code Apps - No Code Conf 2019 Demo Theater
Forms + Zaps = No Code Apps - No Code Conf 2019 Demo TheaterForms + Zaps = No Code Apps - No Code Conf 2019 Demo Theater
Forms + Zaps = No Code Apps - No Code Conf 2019 Demo TheaterWebflow
 
How to Go Web Site Live in China?
How to Go Web Site Live in China?How to Go Web Site Live in China?
How to Go Web Site Live in China?Jordan Chung
 
SharePoint Staff Vacation Planner
SharePoint Staff Vacation PlannerSharePoint Staff Vacation Planner
SharePoint Staff Vacation PlannerMani Kapali
 
Using Parse Server to send emails via Mandrill
Using Parse Server to send emails via MandrillUsing Parse Server to send emails via Mandrill
Using Parse Server to send emails via MandrillCharles Ramos
 
16 asp.net session23
16 asp.net session2316 asp.net session23
16 asp.net session23Vivek chan
 
[Tutorial ]How to Use IFTTT Applets
[Tutorial ]How to Use IFTTT Applets [Tutorial ]How to Use IFTTT Applets
[Tutorial ]How to Use IFTTT Applets Ana Uy
 
Asana how-to-guide-vaninja
Asana how-to-guide-vaninjaAsana how-to-guide-vaninja
Asana how-to-guide-vaninjaAbigail De Mesa
 

What's hot (18)

EXTERNAL IMAP CLIENT –IOS
EXTERNAL IMAP CLIENT –IOSEXTERNAL IMAP CLIENT –IOS
EXTERNAL IMAP CLIENT –IOS
 
Using the Adobe Connect API - finding unused recordings
Using the Adobe Connect API - finding unused recordingsUsing the Adobe Connect API - finding unused recordings
Using the Adobe Connect API - finding unused recordings
 
Online mobile game server use Firebase realtime aatabase
Online mobile game server use Firebase realtime aatabaseOnline mobile game server use Firebase realtime aatabase
Online mobile game server use Firebase realtime aatabase
 
Working with APIs as a no-coder - No Code Conf 2019 Demo Theater
Working with APIs as a no-coder - No Code Conf 2019 Demo TheaterWorking with APIs as a no-coder - No Code Conf 2019 Demo Theater
Working with APIs as a no-coder - No Code Conf 2019 Demo Theater
 
Patron Power Platform Community November 2021 Webinar
Patron Power Platform Community November 2021 WebinarPatron Power Platform Community November 2021 Webinar
Patron Power Platform Community November 2021 Webinar
 
How to submit sitemap by Ravi
How to submit sitemap by RaviHow to submit sitemap by Ravi
How to submit sitemap by Ravi
 
9 word press 2c
9   word press 2c9   word press 2c
9 word press 2c
 
WordPress and IoT
WordPress and IoTWordPress and IoT
WordPress and IoT
 
Creating an app on Ribily Part 3 flow creation
Creating an app on Ribily Part 3 flow creationCreating an app on Ribily Part 3 flow creation
Creating an app on Ribily Part 3 flow creation
 
Forms + Zaps = No Code Apps - No Code Conf 2019 Demo Theater
Forms + Zaps = No Code Apps - No Code Conf 2019 Demo TheaterForms + Zaps = No Code Apps - No Code Conf 2019 Demo Theater
Forms + Zaps = No Code Apps - No Code Conf 2019 Demo Theater
 
Introduction to script lab
Introduction to script labIntroduction to script lab
Introduction to script lab
 
How to Go Web Site Live in China?
How to Go Web Site Live in China?How to Go Web Site Live in China?
How to Go Web Site Live in China?
 
ReviewTrackers + Zapier
ReviewTrackers + ZapierReviewTrackers + Zapier
ReviewTrackers + Zapier
 
SharePoint Staff Vacation Planner
SharePoint Staff Vacation PlannerSharePoint Staff Vacation Planner
SharePoint Staff Vacation Planner
 
Using Parse Server to send emails via Mandrill
Using Parse Server to send emails via MandrillUsing Parse Server to send emails via Mandrill
Using Parse Server to send emails via Mandrill
 
16 asp.net session23
16 asp.net session2316 asp.net session23
16 asp.net session23
 
[Tutorial ]How to Use IFTTT Applets
[Tutorial ]How to Use IFTTT Applets [Tutorial ]How to Use IFTTT Applets
[Tutorial ]How to Use IFTTT Applets
 
Asana how-to-guide-vaninja
Asana how-to-guide-vaninjaAsana how-to-guide-vaninja
Asana how-to-guide-vaninja
 

Similar to Accessibility with Single Page Apps

State of Drupal keynote, DrupalCon Prague
State of Drupal keynote, DrupalCon PragueState of Drupal keynote, DrupalCon Prague
State of Drupal keynote, DrupalCon PragueDries Buytaert
 
Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...
Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...
Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...Martin Leyrer
 
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB
 
Welcome to IE8 - Integrating Your Site With Internet Explorer 8
Welcome to IE8 - Integrating Your Site With Internet Explorer 8Welcome to IE8 - Integrating Your Site With Internet Explorer 8
Welcome to IE8 - Integrating Your Site With Internet Explorer 8Lachlan Hardy
 
A Primer on Web Accessibility for Teams
A Primer on Web Accessibility for TeamsA Primer on Web Accessibility for Teams
A Primer on Web Accessibility for TeamsMikey Ilagan
 
URL Hacking 101: An Easy Way to Streamline Processes in Salesforce
URL Hacking 101: An Easy Way to Streamline Processes in Salesforce URL Hacking 101: An Easy Way to Streamline Processes in Salesforce
URL Hacking 101: An Easy Way to Streamline Processes in Salesforce Configero
 
235042632 super-shop-ee
235042632 super-shop-ee235042632 super-shop-ee
235042632 super-shop-eehomeworkping3
 
Getting started with html5
Getting started with html5Getting started with html5
Getting started with html5Suresh Kumar
 
HTML5 Up and Running
HTML5 Up and RunningHTML5 Up and Running
HTML5 Up and RunningCodemotion
 
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB
 
Building accessible web components without tears
Building accessible web components without tearsBuilding accessible web components without tears
Building accessible web components without tearsRuss Weakley
 
Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3Wahyu Putra
 
Introduction to html5
Introduction to html5Introduction to html5
Introduction to html5Manav Prasad
 

Similar to Accessibility with Single Page Apps (20)

Sharepoint
SharepointSharepoint
Sharepoint
 
Sharepoint
SharepointSharepoint
Sharepoint
 
Sharepoint
SharepointSharepoint
Sharepoint
 
State of Drupal keynote, DrupalCon Prague
State of Drupal keynote, DrupalCon PragueState of Drupal keynote, DrupalCon Prague
State of Drupal keynote, DrupalCon Prague
 
Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...
Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...
Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...
 
Chapter 25
Chapter 25Chapter 25
Chapter 25
 
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
 
Welcome to IE8 - Integrating Your Site With Internet Explorer 8
Welcome to IE8 - Integrating Your Site With Internet Explorer 8Welcome to IE8 - Integrating Your Site With Internet Explorer 8
Welcome to IE8 - Integrating Your Site With Internet Explorer 8
 
8fig
8fig8fig
8fig
 
A Primer on Web Accessibility for Teams
A Primer on Web Accessibility for TeamsA Primer on Web Accessibility for Teams
A Primer on Web Accessibility for Teams
 
URL Hacking 101: An Easy Way to Streamline Processes in Salesforce
URL Hacking 101: An Easy Way to Streamline Processes in Salesforce URL Hacking 101: An Easy Way to Streamline Processes in Salesforce
URL Hacking 101: An Easy Way to Streamline Processes in Salesforce
 
235042632 super-shop-ee
235042632 super-shop-ee235042632 super-shop-ee
235042632 super-shop-ee
 
Html 5
Html 5Html 5
Html 5
 
Getting started with html5
Getting started with html5Getting started with html5
Getting started with html5
 
HTML5 Up and Running
HTML5 Up and RunningHTML5 Up and Running
HTML5 Up and Running
 
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
 
Building accessible web components without tears
Building accessible web components without tearsBuilding accessible web components without tears
Building accessible web components without tears
 
Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3
 
Xhtml validation
Xhtml validationXhtml validation
Xhtml validation
 
Introduction to html5
Introduction to html5Introduction to html5
Introduction to html5
 

More from Ross Mullen

Creating Website Status Updates for the Blind, the Bold and the Beautiful
Creating Website Status Updates for the Blind, the Bold and the BeautifulCreating Website Status Updates for the Blind, the Bold and the Beautiful
Creating Website Status Updates for the Blind, the Bold and the BeautifulRoss Mullen
 
Core accessibility patterns for better Joomla! sites
Core accessibility patterns for better Joomla! sitesCore accessibility patterns for better Joomla! sites
Core accessibility patterns for better Joomla! sitesRoss Mullen
 
Whats new in WCAG 2.1
Whats new in WCAG 2.1Whats new in WCAG 2.1
Whats new in WCAG 2.1Ross Mullen
 
Making chatbots accessible - DTA
Making chatbots accessible - DTAMaking chatbots accessible - DTA
Making chatbots accessible - DTARoss Mullen
 
Making chatbots accessible
Making chatbots accessibleMaking chatbots accessible
Making chatbots accessibleRoss Mullen
 
Accessible UX in Government - OZeWAI 2015
Accessible UX in Government - OZeWAI 2015Accessible UX in Government - OZeWAI 2015
Accessible UX in Government - OZeWAI 2015Ross Mullen
 
Challenges with third party tools in Federal Government web apps - A11y Camp ...
Challenges with third party tools in Federal Government web apps - A11y Camp ...Challenges with third party tools in Federal Government web apps - A11y Camp ...
Challenges with third party tools in Federal Government web apps - A11y Camp ...Ross Mullen
 

More from Ross Mullen (7)

Creating Website Status Updates for the Blind, the Bold and the Beautiful
Creating Website Status Updates for the Blind, the Bold and the BeautifulCreating Website Status Updates for the Blind, the Bold and the Beautiful
Creating Website Status Updates for the Blind, the Bold and the Beautiful
 
Core accessibility patterns for better Joomla! sites
Core accessibility patterns for better Joomla! sitesCore accessibility patterns for better Joomla! sites
Core accessibility patterns for better Joomla! sites
 
Whats new in WCAG 2.1
Whats new in WCAG 2.1Whats new in WCAG 2.1
Whats new in WCAG 2.1
 
Making chatbots accessible - DTA
Making chatbots accessible - DTAMaking chatbots accessible - DTA
Making chatbots accessible - DTA
 
Making chatbots accessible
Making chatbots accessibleMaking chatbots accessible
Making chatbots accessible
 
Accessible UX in Government - OZeWAI 2015
Accessible UX in Government - OZeWAI 2015Accessible UX in Government - OZeWAI 2015
Accessible UX in Government - OZeWAI 2015
 
Challenges with third party tools in Federal Government web apps - A11y Camp ...
Challenges with third party tools in Federal Government web apps - A11y Camp ...Challenges with third party tools in Federal Government web apps - A11y Camp ...
Challenges with third party tools in Federal Government web apps - A11y Camp ...
 

Recently uploaded

Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Sonam Pathan
 
Elevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New OrleansElevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New Orleanscorenetworkseo
 
NSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationNSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationMarko4394
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhimiss dipika
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationLinaWolf1
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书zdzoqco
 
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Excelmac1
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITMgdsc13
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa494f574xmv
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书rnrncn29
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书rnrncn29
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作ys8omjxb
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一Fs
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Sonam Pathan
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一z xss
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)Christopher H Felton
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Paul Calvano
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一Fs
 

Recently uploaded (20)

Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
 
Elevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New OrleansElevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New Orleans
 
NSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationNSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentation
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhi
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
 
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITM
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
 
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
 
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
 

Accessibility with Single Page Apps

  • 2. The web landscape We're using more complex Javascript frontend frameworks to generate web content. Accessibility isn't made more difficult, the same rules still apply.
  • 3. Why accessibility? Because it’s the right thing to do Because its not hard or expensive Because of Government, Government digital services have to be accessible to WCAG 2.0 AA
  • 4. A recap on WCAG 2/2.1 International best practice standard to make websites accessible A AA AAA most comprehensive and requires more work to bring a website up to speed basic level of accessibility it'll help some people and it doesn’t take much overhead Is the compromise between effort and accessibility
  • 5. Websites Generally straightforward to make a website accessible. They're static with little functionality.
  • 6. Web applications More challenging to make accessible. Handling complex functionality means we need to put greater emphasis into adding the accessibility.
  • 7. Mythbusting Javascript frameworks don't make a web application any more or any less accessible
  • 8. Accessibility in React "React fully supports building accessible websites, often by using standard HTML techniques" https://reactjs.org/docs/accessibility.html
  • 9. Accessibility in Angular 7 "Create accessible applications with ARIA-enabled components, developer guides, and built-in a11y test infrastructure" https://angular.io/features
  • 10. Beware Even though a framework has good support for accessibility doesn’t mean you don’t need to do anything.
  • 11. Implementation is key The accessibility is solely down to how it's implemented, if your code has poor accessibility support the outcome won't be great.
  • 12. Single Page Apps Are more complicated, which means the accessibility has to be more involved.
  • 13. Prioritising effort Focus less about colour contrast, link text and correct heading structure.
  • 14. Rules to develop to 1. Write HTML according to specifications 2. Make elements focusable from the keyboard 3. Page updates need to be announced
  • 15. 1. Write HTML according to specs Use elements the correct way, if you need a button use a button.
  • 16. Building your own elements Means you need to add accessibility behaviour back onto the controls, it’s a massive headache and it takes time. Do you need to make custom controls?
  • 17. Building your own elements <span>Click Me</span> <div>Click Me</div> SPAN and DIV elements have no default behaviour, it needs to be built in.
  • 18. Building a button <div role="button">Click Me</div> + Add the ARIA role
  • 19. Building a button <div role="button" tabindex="0">Click Me</div> + Add the ARIA role + Add the tabindex
  • 20. Building a button <div role="button" tabindex="0">Click Me</div> + Add the ARIA role + Add the tabindex + Add the style change
  • 21. Or just use a button <button>Click Me</button>
  • 22. Semantic elements They just work, assistive technology interprets them correctly. No extra work is needed.
  • 23. The trade off Semantic interface = works as intended Custom interface = adding accessibility back
  • 24. 2. Keyboard focusable Make everything focusable from the keyboard, some people may use the keyboard over the mouse.
  • 25. Use the tabindex attribute wisely Can be used to reorder the entire keyboard tab sequence if not careful. If you use regular elements in a regular way, this behaviour is already included by default.
  • 26. Positioning <a href="blah.html tabindex="10">blah</a> Refers to the tab position of the element on the page
  • 27. Pick a number tabindex="0" element appears in the regular keyboard sequence tabindex="-1" element is hidden from the keyboard sequence tabindex="1" + goodbye regular keyboard sequence!
  • 28. Don’t do this <a href="blah.html" tabindex="1">blah</a>
  • 29. Or this <a href="blah.html" tabindex="10">blah</a>
  • 30. Or even this <a href="blah.html" tabindex="1010">blah</a>
  • 31. Tabindex of +1 and above <a href="blah.html" tabindex="1">blah</a>
  • 32. 3. Updates need to be announced Announce the change if the page updates.
  • 33. What's it doing? SPA's may not always trigger a full page refresh, if a user is vision impaired they won't know a change has occurred.
  • 34. Introducing ARIA Set of attributes which generate behaviour in assistive technology to announce changes to help a web application work better for AT users.
  • 35. Need to announce an update? An aria live region can trigger a screen reader to announce new content.
  • 36. Need to announce an update? <div aria-live="polite"> Content to announce </div>
  • 37. ARIA live region q Content updated Updating page content static content "Content updated"X
  • 38. Automate the heavy lifting Reach Router for React "Router manages the focus of your app on route transitions. There’s nothing you have to do about it, it just happens." LiveAnnouncer Angular Material "LiveAnnouncer is used to announce messages for screen-reader users using an aria-live region"
  • 39. This is just scratching the surface Accessibility is complex and challenging, different browsers and screen readers will affect end results.
  • 40. Focus on the hard and difficult • Use semantic elements • Don’t alter the tabindex • Announce updates with ARIA live regions
  • 41. For more information Get the code at github.com/canaxess/presentations navigate to CanberraJS www.canaxess.com.au ross.mullen@canaxess.com.au @MrRossMullen