SlideShare uma empresa Scribd logo
1 de 72
Baixar para ler offline
1
Hello !
slid.do/armadajs
Stefan Feješ
" 20yo Frontend Engineer
🎤 Organizes Novi Sad JS
🐙 Open source contributor
fejes713
Stefan Feješ
" 20yo Frontend Engineer
🎤 Organizes Novi Sad JS
🐙 Open source contributor
fejes713
Stefan Feješ
" 20yo Frontend Engineer
🎤 Organizes Novi Sad JS
🐙 Open source contributor
fejes713
fejes713
Accessible JavaScript applications
What is accessibility?
fejes713
– Oxford English Dictionary
“The quality of being easily reached, entered, or used
by people who have a disability”
accessibile:
fejes713
… and what about the Web?
fejes713
“A blind man couldn’t order
pizza from Domino’s. The
company wants the Supreme
Court to say websites don’t
have to be accessible”
– BBC News
About 15% of the world's population have some form of disability
fejes713
Types of disabilities:
• visual 👓
• physical
• cognitive 🧠
• auditory 💬
• …
fejes713
Types of disabilities:
• visual 👓
• physical
• cognitive 🧠
• auditory 💬
• …
fejes713
Types of disabilities:
• visual 👓
• physical
• cognitive 🧠
• auditory 💬
• …
fejes713
Types of disabilities:
• visual 👓
• physical
• cognitive 🧠
• auditory 💬
• …
fejes713
Types of disabilities:
• visual 👓
• physical
• cognitive 🧠
• auditory 💬
• …
fejes713
so what are the problems?
fejes713
visually impaired users
Screen readers
fejes713
Screen readers
can read all text visible on a page
can read some tags that a sighted user will not be able to see
can list all headers and links
can’t read text based on css layout
can’t read text on images
can’t detect navigation
fejes713
Screen readers
can read all text visible on a page
can read some tags that a sighted user will not be able to see
can list all headers and links
can’t read text based on css layout
can’t read text on images
can’t detect navigation
fejes713
Screen readers
can read all text visible on a page
can read some tags that a sighted user will not be able to see
can list all headers and links
can’t read text based on css layout
can’t read text on images
can’t detect navigation
fejes713
Screen readers
can read all text visible on a page
can read some tags that a sighted user will not be able to see
can list all headers and links
can’t read text based on css layout
can’t read text on images
can’t detect navigation
fejes713
Screen readers
can read all text visible on a page
can read some tags that a sighted user will not be able to see
can list all headers and links
can’t read text based on css layout
can’t read text on images
can’t detect navigation
fejes713
The alt attribute
The alt attribute
• always set the alt attribute
• alt=“” for decorative images
• put the period in the end at of the alt attribute
The alt attribute
• always set the alt attribute
• alt=“” for decorative images
• put the period in the end at of the alt attribute
The alt attribute
• always set the alt attribute
• alt=“” for decorative images
• put the period in the end at of the alt attribute
fejes713
fejes713
fejes713
"captions": [
{
"text": "a hand holding a cellphone",
"confidence": 0.9583763512737793
}
]
Navigation
fejes713
<Navigation /> <Container />
fejes713
Announcing changes
import React from "react";
class Announcements extends React.Component {
render() {
return (
<div aria-live="polite" aria-atomic="true"
className="visuallyhidden">
{this.props.message}
</div>
);
}
};
export default Announcements;
fejes713
Announcing changes
import React from "react";
class Announcements extends React.Component {
render() {
return (
<div aria-live="polite" aria-atomic="true"
className="visuallyhidden">
{this.props.message}
</div>
);
}
};
export default Announcements;
fejes713
Announcing changes
import React from "react";
class Announcements extends React.Component {
render() {
return (
<div aria-live="polite" aria-atomic="true"
className="visuallyhidden">
{this.props.message}
</div>
);
}
};
export default Announcements;
// Vue.js - change tab title on route switch
router.beforeEach((to, from, next) => {
document.title = `${to.name} - Your site name`;
next();
});
fejes713
Change page titles on each route
content
skip link example
fejes713
Physically impaired users
• Reachable custom elements
• Tab, Space, Escape, Arrow keys
• Visible focus styles
fejes713
Keyboard navigation
tabindex
can make custom elements focusable and ugly
doesn’t make custom elements accessible without additional effor
💡 Rules to follow:
fejes713
always set tabIndex on custom interactive elements
tabIndex="0" // in regular tab order
tabIndex="-1" // focusable by JavaScript only
tabIndex="1" // not recommended!
let mouseDown = false;
element.addEventListener('mousedown', () => {
mouseDown = true;
});
element.addEventListener('mouseup', () => {
mouseDown = false;
});
element.addEventListener('focus', (event) => {
if (mouseDown) {
event.target.blur(); // removes blue outline
}
});
fejes713
ARIA (accessible rich internet applications)
can make custom elements fully accessible
can expose a11y information for custom elements
💡 Some of aria-* attributes:
fejes713
role="button" // defines type of custom element
aria-label="open" // meaningful label to go with it
<div class="button">
Sign up!
</div>
fejes713
<div
class="button"
tabindex="0"
role=“button"
aria-label="Open sign up modal”
onClick={modalHandler}
>
Sign up!
</div>
→
❌ don’t ✔ do
custom el. = tabIndex + role + label + aria-* + event handler
<div class="button">
Sign up!
</div>
fejes713
<button
class=“button"
aria-label="Open sign up modal”
onClick={modalHandler}
>
Sign up!
</button>
→
❌ don’t ✔ 🔥
custom el. = tabIndex + role + label + aria-* + event handler
Keyboard traps and modals
Inaccessible modals 🤒
fejes713
fejes713
Accessible modals
should be closed once the overlay or ESC key is clicked
should toggle aria-hidden attribute on modal
should maintain focus position before and after toggling modal
should focus the first focusable element within the modal
should trap the user’s focus within the modal
fejes713
Accessible modals
should be closed once the overlay or ESC key is clicked
should toggle aria-hidden attribute on modal
should maintain focus position before and after toggling modal
should focus the first focusable element within the modal
should trap the user’s focus within the modal
fejes713
Accessible modals
should be closed once the overlay or ESC key is clicked
should toggle aria-hidden attribute on modal
should maintain focus position before and after toggling modal
should focus the first focusable element within the modal
should trap the user’s focus within the modal
fejes713
Accessible modals
should be closed once the overlay or ESC key is clicked
should toggle aria-hidden attribute on modal
should maintain focus position before and after toggling modal
should focus the first focusable element within the modal
should trap the user’s focus within the modal
fejes713
Accessible modals
should be closed once the overlay or ESC key is clicked
should toggle aria-hidden attribute on modal
should maintain focus position before and after toggling modal
should focus the first focusable element within the modal
should trap the user’s focus within the modal
Cognitively impaired users
💡 Improvements
• Typography
• Justified text
• Short sentence and paragraphs
• Ability to turn off animations
fejes713
const reduceMotionQuery = matchMedia("(prefers-reduced-motion)");
if (reduceMotionQuery.matches) {
// turn animations off
} else {
// turn animations on
}
fejes713
Natively toggle animations
Auditory impaired
💡 Improvements
• Interactive features with visual alerts
• Videos with good captioning
fejes713
Auto-generated captions
audio file WebVTT
fejes713
Temporary disabilities
fejes713
Microsoft’s inclusive toolkit
What is considered a
good UX in 2019?
fejes713
fejes713
Good UX in 2019:
Loads instantly
60 fps ⚡
Usable with a keyboard
Looks amazing 👀
Accessible contrast
Award winning content 🏆
Semantic HTML
Works on the following screen sizes: All of them
Works well in low light environment 🌙
Works well in a bright light environment ☀
Follows all fundamental UI patterns
No scroll jank
Well balanced if user has different zoom level
Start with small tweaks that can make a
huge impact on your website’s accessibility
fejes713
Accessible JavaScript applications

Mais conteúdo relacionado

Mais procurados

J Query - Your First Steps
J Query - Your First StepsJ Query - Your First Steps
J Query - Your First StepsBronson Quick
 
An in-depth look at jQuery UI
An in-depth look at jQuery UIAn in-depth look at jQuery UI
An in-depth look at jQuery UIPaul Bakaus
 
Ionic tabs template explained
Ionic tabs template explainedIonic tabs template explained
Ionic tabs template explainedRamesh BN
 
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJRealize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJLeonardo Balter
 
iPhone Web Applications: HTML5, CSS3 & dev tips for iPhone development
iPhone Web Applications: HTML5, CSS3 & dev tips for iPhone developmentiPhone Web Applications: HTML5, CSS3 & dev tips for iPhone development
iPhone Web Applications: HTML5, CSS3 & dev tips for iPhone developmentEstelle Weyl
 
Introduction to jQuery Mobile - Web Deliver for All
Introduction to jQuery Mobile - Web Deliver for AllIntroduction to jQuery Mobile - Web Deliver for All
Introduction to jQuery Mobile - Web Deliver for AllMarc Grabanski
 
Survey of Front End Topics in Rails
Survey of Front End Topics in RailsSurvey of Front End Topics in Rails
Survey of Front End Topics in RailsBenjamin Vandgrift
 
How to actually use promises - Jakob Mattsson, FishBrain
How to actually use promises - Jakob Mattsson, FishBrainHow to actually use promises - Jakob Mattsson, FishBrain
How to actually use promises - Jakob Mattsson, FishBrainCodemotion Tel Aviv
 
Perrée &amp; Partners, Collectief Pensioen
Perrée &amp; Partners, Collectief PensioenPerrée &amp; Partners, Collectief Pensioen
Perrée &amp; Partners, Collectief Pensioenhenk0610
 
Overview of Backbone
Overview of BackboneOverview of Backbone
Overview of BackboneJohn Ashmead
 
Be nice to your designers
Be nice to your designersBe nice to your designers
Be nice to your designersPai-Cheng Tao
 
Whirlwind Tour of SVG (plus RaphaelJS)
Whirlwind Tour of SVG (plus RaphaelJS)Whirlwind Tour of SVG (plus RaphaelJS)
Whirlwind Tour of SVG (plus RaphaelJS)Marc Grabanski
 

Mais procurados (15)

J Query - Your First Steps
J Query - Your First StepsJ Query - Your First Steps
J Query - Your First Steps
 
An in-depth look at jQuery UI
An in-depth look at jQuery UIAn in-depth look at jQuery UI
An in-depth look at jQuery UI
 
Ionic tabs template explained
Ionic tabs template explainedIonic tabs template explained
Ionic tabs template explained
 
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJRealize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
 
iPhone Web Applications: HTML5, CSS3 & dev tips for iPhone development
iPhone Web Applications: HTML5, CSS3 & dev tips for iPhone developmentiPhone Web Applications: HTML5, CSS3 & dev tips for iPhone development
iPhone Web Applications: HTML5, CSS3 & dev tips for iPhone development
 
Game Ontology
Game OntologyGame Ontology
Game Ontology
 
Introduction to jQuery Mobile - Web Deliver for All
Introduction to jQuery Mobile - Web Deliver for AllIntroduction to jQuery Mobile - Web Deliver for All
Introduction to jQuery Mobile - Web Deliver for All
 
The Thinking behind BEM
The Thinking behind BEMThe Thinking behind BEM
The Thinking behind BEM
 
Survey of Front End Topics in Rails
Survey of Front End Topics in RailsSurvey of Front End Topics in Rails
Survey of Front End Topics in Rails
 
How to actually use promises - Jakob Mattsson, FishBrain
How to actually use promises - Jakob Mattsson, FishBrainHow to actually use promises - Jakob Mattsson, FishBrain
How to actually use promises - Jakob Mattsson, FishBrain
 
Perrée &amp; Partners, Collectief Pensioen
Perrée &amp; Partners, Collectief PensioenPerrée &amp; Partners, Collectief Pensioen
Perrée &amp; Partners, Collectief Pensioen
 
Overview of Backbone
Overview of BackboneOverview of Backbone
Overview of Backbone
 
Taking your Web App for a walk
Taking your Web App for a walkTaking your Web App for a walk
Taking your Web App for a walk
 
Be nice to your designers
Be nice to your designersBe nice to your designers
Be nice to your designers
 
Whirlwind Tour of SVG (plus RaphaelJS)
Whirlwind Tour of SVG (plus RaphaelJS)Whirlwind Tour of SVG (plus RaphaelJS)
Whirlwind Tour of SVG (plus RaphaelJS)
 

Semelhante a Accessible JavaScript applications

Adaptive Layouts - standards>next London 28.05.2011
Adaptive Layouts - standards>next London 28.05.2011Adaptive Layouts - standards>next London 28.05.2011
Adaptive Layouts - standards>next London 28.05.2011Patrick Lauke
 
Accessible web applications
Accessible web applicationsAccessible web applications
Accessible web applicationsWojtek Zając
 
Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....
Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....
Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....Patrick Lauke
 
Accessibility in Responsive web design
Accessibility in Responsive web designAccessibility in Responsive web design
Accessibility in Responsive web designNexer Digital
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX DesignersAshlimarie
 
Web Accessibility for the 21st Century
Web Accessibility for the 21st CenturyWeb Accessibility for the 21st Century
Web Accessibility for the 21st Centurydreamwidth
 
Android Accessibility - Droidcon London
Android Accessibility - Droidcon LondonAndroid Accessibility - Droidcon London
Android Accessibility - Droidcon LondonKelly Shuster
 
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpOptimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpMatthew Davis
 
Worry free web development
Worry free web developmentWorry free web development
Worry free web developmentEstelle Weyl
 
Once Source to Rule Them All
Once Source to Rule Them AllOnce Source to Rule Them All
Once Source to Rule Them AllDavid Yeiser
 
Web development basics (Part-2)
Web development basics (Part-2)Web development basics (Part-2)
Web development basics (Part-2)Rajat Pratap Singh
 
Web Accessibility Gone Wild (Now Even MORE Wilder!)
Web Accessibility Gone Wild (Now Even MORE Wilder!)Web Accessibility Gone Wild (Now Even MORE Wilder!)
Web Accessibility Gone Wild (Now Even MORE Wilder!)Jared Smith
 
The specs behind the sex, mobile-friendly layout beyond the desktop
The specs behind the sex, mobile-friendly layout beyond the desktopThe specs behind the sex, mobile-friendly layout beyond the desktop
The specs behind the sex, mobile-friendly layout beyond the desktopbetabeers
 
Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...Andreas Bovens
 
It's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrIt's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrMichael Enslow
 
Responsive & Responsible: Implementing Responsive Design at Scale
Responsive & Responsible: Implementing Responsive Design at ScaleResponsive & Responsible: Implementing Responsive Design at Scale
Responsive & Responsible: Implementing Responsive Design at Scalescottjehl
 
Building a better, accessible web
Building a better, accessible webBuilding a better, accessible web
Building a better, accessible webMatt Stow
 

Semelhante a Accessible JavaScript applications (20)

Adaptive Layouts - standards>next London 28.05.2011
Adaptive Layouts - standards>next London 28.05.2011Adaptive Layouts - standards>next London 28.05.2011
Adaptive Layouts - standards>next London 28.05.2011
 
EVOLVE'16 | Maximize | Libby Schaper & Gina Petrucceli | Web Accessibility & AEM
EVOLVE'16 | Maximize | Libby Schaper & Gina Petrucceli | Web Accessibility & AEMEVOLVE'16 | Maximize | Libby Schaper & Gina Petrucceli | Web Accessibility & AEM
EVOLVE'16 | Maximize | Libby Schaper & Gina Petrucceli | Web Accessibility & AEM
 
EVOLVE'16 | Maximize | Gina Petruccelli & Libby Schaper | Web Accessibility &...
EVOLVE'16 | Maximize | Gina Petruccelli & Libby Schaper | Web Accessibility &...EVOLVE'16 | Maximize | Gina Petruccelli & Libby Schaper | Web Accessibility &...
EVOLVE'16 | Maximize | Gina Petruccelli & Libby Schaper | Web Accessibility &...
 
Accessible web applications
Accessible web applicationsAccessible web applications
Accessible web applications
 
Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....
Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....
Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....
 
Accessibility in Responsive web design
Accessibility in Responsive web designAccessibility in Responsive web design
Accessibility in Responsive web design
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
 
Web Accessibility for the 21st Century
Web Accessibility for the 21st CenturyWeb Accessibility for the 21st Century
Web Accessibility for the 21st Century
 
Android Accessibility - Droidcon London
Android Accessibility - Droidcon LondonAndroid Accessibility - Droidcon London
Android Accessibility - Droidcon London
 
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpOptimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
 
Worry free web development
Worry free web developmentWorry free web development
Worry free web development
 
Once Source to Rule Them All
Once Source to Rule Them AllOnce Source to Rule Them All
Once Source to Rule Them All
 
Web development basics (Part-2)
Web development basics (Part-2)Web development basics (Part-2)
Web development basics (Part-2)
 
Web Accessibility Gone Wild (Now Even MORE Wilder!)
Web Accessibility Gone Wild (Now Even MORE Wilder!)Web Accessibility Gone Wild (Now Even MORE Wilder!)
Web Accessibility Gone Wild (Now Even MORE Wilder!)
 
The specs behind the sex, mobile-friendly layout beyond the desktop
The specs behind the sex, mobile-friendly layout beyond the desktopThe specs behind the sex, mobile-friendly layout beyond the desktop
The specs behind the sex, mobile-friendly layout beyond the desktop
 
Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...
 
It's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrIt's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking Modernizr
 
Html5 intro
Html5 introHtml5 intro
Html5 intro
 
Responsive & Responsible: Implementing Responsive Design at Scale
Responsive & Responsible: Implementing Responsive Design at ScaleResponsive & Responsible: Implementing Responsive Design at Scale
Responsive & Responsible: Implementing Responsive Design at Scale
 
Building a better, accessible web
Building a better, accessible webBuilding a better, accessible web
Building a better, accessible web
 

Último

Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROmotivationalword821
 

Último (20)

Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTRO
 

Accessible JavaScript applications

  • 1. 1
  • 4. Stefan Feješ " 20yo Frontend Engineer 🎤 Organizes Novi Sad JS 🐙 Open source contributor fejes713
  • 5. Stefan Feješ " 20yo Frontend Engineer 🎤 Organizes Novi Sad JS 🐙 Open source contributor fejes713
  • 6. Stefan Feješ " 20yo Frontend Engineer 🎤 Organizes Novi Sad JS 🐙 Open source contributor fejes713
  • 10. – Oxford English Dictionary “The quality of being easily reached, entered, or used by people who have a disability” accessibile: fejes713
  • 11. … and what about the Web? fejes713
  • 12. “A blind man couldn’t order pizza from Domino’s. The company wants the Supreme Court to say websites don’t have to be accessible” – BBC News
  • 13. About 15% of the world's population have some form of disability fejes713
  • 14. Types of disabilities: • visual 👓 • physical • cognitive 🧠 • auditory 💬 • … fejes713
  • 15. Types of disabilities: • visual 👓 • physical • cognitive 🧠 • auditory 💬 • … fejes713
  • 16. Types of disabilities: • visual 👓 • physical • cognitive 🧠 • auditory 💬 • … fejes713
  • 17. Types of disabilities: • visual 👓 • physical • cognitive 🧠 • auditory 💬 • … fejes713
  • 18. Types of disabilities: • visual 👓 • physical • cognitive 🧠 • auditory 💬 • … fejes713
  • 19.
  • 20. so what are the problems? fejes713
  • 22.
  • 23.
  • 25. Screen readers can read all text visible on a page can read some tags that a sighted user will not be able to see can list all headers and links can’t read text based on css layout can’t read text on images can’t detect navigation fejes713
  • 26. Screen readers can read all text visible on a page can read some tags that a sighted user will not be able to see can list all headers and links can’t read text based on css layout can’t read text on images can’t detect navigation fejes713
  • 27. Screen readers can read all text visible on a page can read some tags that a sighted user will not be able to see can list all headers and links can’t read text based on css layout can’t read text on images can’t detect navigation fejes713
  • 28. Screen readers can read all text visible on a page can read some tags that a sighted user will not be able to see can list all headers and links can’t read text based on css layout can’t read text on images can’t detect navigation fejes713
  • 29. Screen readers can read all text visible on a page can read some tags that a sighted user will not be able to see can list all headers and links can’t read text based on css layout can’t read text on images can’t detect navigation fejes713
  • 31. The alt attribute • always set the alt attribute • alt=“” for decorative images • put the period in the end at of the alt attribute
  • 32. The alt attribute • always set the alt attribute • alt=“” for decorative images • put the period in the end at of the alt attribute
  • 33. The alt attribute • always set the alt attribute • alt=“” for decorative images • put the period in the end at of the alt attribute
  • 36. fejes713 "captions": [ { "text": "a hand holding a cellphone", "confidence": 0.9583763512737793 } ]
  • 39. fejes713 Announcing changes import React from "react"; class Announcements extends React.Component { render() { return ( <div aria-live="polite" aria-atomic="true" className="visuallyhidden"> {this.props.message} </div> ); } }; export default Announcements;
  • 40. fejes713 Announcing changes import React from "react"; class Announcements extends React.Component { render() { return ( <div aria-live="polite" aria-atomic="true" className="visuallyhidden"> {this.props.message} </div> ); } }; export default Announcements;
  • 41. fejes713 Announcing changes import React from "react"; class Announcements extends React.Component { render() { return ( <div aria-live="polite" aria-atomic="true" className="visuallyhidden"> {this.props.message} </div> ); } }; export default Announcements;
  • 42. // Vue.js - change tab title on route switch router.beforeEach((to, from, next) => { document.title = `${to.name} - Your site name`; next(); }); fejes713 Change page titles on each route
  • 44.
  • 46. • Reachable custom elements • Tab, Space, Escape, Arrow keys • Visible focus styles fejes713 Keyboard navigation
  • 47. tabindex can make custom elements focusable and ugly doesn’t make custom elements accessible without additional effor 💡 Rules to follow: fejes713 always set tabIndex on custom interactive elements tabIndex="0" // in regular tab order tabIndex="-1" // focusable by JavaScript only tabIndex="1" // not recommended!
  • 48. let mouseDown = false; element.addEventListener('mousedown', () => { mouseDown = true; }); element.addEventListener('mouseup', () => { mouseDown = false; }); element.addEventListener('focus', (event) => { if (mouseDown) { event.target.blur(); // removes blue outline } }); fejes713
  • 49. ARIA (accessible rich internet applications) can make custom elements fully accessible can expose a11y information for custom elements 💡 Some of aria-* attributes: fejes713 role="button" // defines type of custom element aria-label="open" // meaningful label to go with it
  • 50. <div class="button"> Sign up! </div> fejes713 <div class="button" tabindex="0" role=“button" aria-label="Open sign up modal” onClick={modalHandler} > Sign up! </div> → ❌ don’t ✔ do custom el. = tabIndex + role + label + aria-* + event handler
  • 51. <div class="button"> Sign up! </div> fejes713 <button class=“button" aria-label="Open sign up modal” onClick={modalHandler} > Sign up! </button> → ❌ don’t ✔ 🔥 custom el. = tabIndex + role + label + aria-* + event handler
  • 54. fejes713 Accessible modals should be closed once the overlay or ESC key is clicked should toggle aria-hidden attribute on modal should maintain focus position before and after toggling modal should focus the first focusable element within the modal should trap the user’s focus within the modal
  • 55. fejes713 Accessible modals should be closed once the overlay or ESC key is clicked should toggle aria-hidden attribute on modal should maintain focus position before and after toggling modal should focus the first focusable element within the modal should trap the user’s focus within the modal
  • 56. fejes713 Accessible modals should be closed once the overlay or ESC key is clicked should toggle aria-hidden attribute on modal should maintain focus position before and after toggling modal should focus the first focusable element within the modal should trap the user’s focus within the modal
  • 57. fejes713 Accessible modals should be closed once the overlay or ESC key is clicked should toggle aria-hidden attribute on modal should maintain focus position before and after toggling modal should focus the first focusable element within the modal should trap the user’s focus within the modal
  • 58. fejes713 Accessible modals should be closed once the overlay or ESC key is clicked should toggle aria-hidden attribute on modal should maintain focus position before and after toggling modal should focus the first focusable element within the modal should trap the user’s focus within the modal
  • 60. 💡 Improvements • Typography • Justified text • Short sentence and paragraphs • Ability to turn off animations fejes713
  • 61. const reduceMotionQuery = matchMedia("(prefers-reduced-motion)"); if (reduceMotionQuery.matches) { // turn animations off } else { // turn animations on } fejes713 Natively toggle animations
  • 63. 💡 Improvements • Interactive features with visual alerts • Videos with good captioning fejes713
  • 65.
  • 68.
  • 69. What is considered a good UX in 2019? fejes713
  • 70. fejes713 Good UX in 2019: Loads instantly 60 fps ⚡ Usable with a keyboard Looks amazing 👀 Accessible contrast Award winning content 🏆 Semantic HTML Works on the following screen sizes: All of them Works well in low light environment 🌙 Works well in a bright light environment ☀ Follows all fundamental UI patterns No scroll jank Well balanced if user has different zoom level
  • 71. Start with small tweaks that can make a huge impact on your website’s accessibility fejes713