Comments (4)
The roving tabindex technique requires JavaScript since the component needs to listen for keypress events (e.g. arrow up).
After reviewing the behavior of tabs, I believe the real problem relies on labels' keyboard interactions (pressing enter or space) not being reflected to the linked radio button. As proof of this, I made the labels focusable by adding tabindex=0
. Pressing the enter or the space key after focusing one of the labels, doesn't affect the state of the related radio button.
In order to solve the problem, I think we should remove display: none
from the radio buttons allowing focus on them. We still need to hide them from the UI by using other techniques.
With this approach:
- it's possible to navigate between tabs using left and right arrow keys; the same interaction provided by radio buttons;
- clicking a label will check and focus the related radio button;
- labels can also display the outline (or any other focus indicator) based o the focused radio button.
You can find a preview in the image below:
Also, note how the focus ring disappears when I click outside of the element, like on any native element.
What do you think?
from cssui.
You did it! Great work.
At this point, you could self-assign this issue and go ahead in the dedicated branch.
Thank you!
from cssui.
We should consider using the "roving tabindex" technique.
https://web.dev/control-focus-with-tabindex/#create-accessible-components-with-%22roving-tabindex%22
What do you think?
from cssui.
Fixed in 9de70ac
from cssui.
Related Issues (20)
- Modal: Missing focus trap HOT 4
- Accordion: focus on closed panel child element HOT 4
- DEVOPS: Configure prettier and stylelint
- Test component templates accessible via direct URL HOT 1
- Sass/SCSS component files HOT 1
- Documentation for contributors HOT 1
- Tabs: Missing accessibility features HOT 4
- [Component] Progress bar HOT 1
- [Component] Datalist HOT 1
- Scroll Position on a page
- Provide CDN link HOT 1
- Prevent text selection on Accordion headings / labels HOT 2
- [Documentation] [Bug] h2 headings too big
- [Component] Range Slider
- Accordion item label keyboard focus not visualized on FF and Safari HOT 4
- Download Link not functioning HOT 5
- Modal doesn't close when the escape key is pressed HOT 2
- [Component] Fullpage Slider HOT 1
- Accordion: no focus feedback on the expanded element HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cssui.