How to Build an Inaccessible App
How to Build an Inaccessible App
How to Build an Inaccessible App
Buttons
Click me!
button
div
Form Labels
document.querySelectorAll("form input").forEach((i) => {
i.addEventListener("input", (e) => {
console.log(e.target.value);
if (e.target.value && e.target.value !== "") {
e.target.previousElementSibling.classList.add("active");
}
});
});
form label {
pointer-events: none;
position: relative;
top: 30px;
left: 10px;
&.active {
top: -5px;
transition: all 0.01s;
}
}
Icon Labels
a span {
position: absolute;
right: -200vw;
}
Hover Effects
Tab Index
0 : Can be navigated to via keyboard
-1 : Cannot be navigated to via keyboard
1 : Will be navigated to in order
ariaaria attributes
ariaButton, Checkbox, Link, Radio, Searchbox, Slider, Scrollbar, Tab, Textbox, Menu, Article, Heading, Img, List, Row, Tablet, Banner, Complementary, Form, Main, Navigation, Alert, Status...
There is some text here
Click here
There is some text here
Click here
ariaSemantic HTML 🎉
Many of these widgets were later incorporated into HTML5, and developers should prefer using the correct semantic HTML element over using ARIA, if such an element existshttps://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA
Important content
Testing
Testing tools
Web Content Accessibility Guidelines
WCAG
Demo time 🤞
Deciphering tests
.element {
filter: url('filters.svg#protanopia');
filter: url('filters.svg#protanomaly');
filter: url('filters.svg#deuteranopia');
filter: url('filters.svg#deuteranomaly');
filter: url('filters.svg#tritanopia');
filter: url('filters.svg#tritanomaly');
filter: url('filters.svg#achromatopsia');
filter: url('filters.svg#achromatomaly');
}
Thank You 👏