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

DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 

Último (20)

DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 

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