Radio Group Example Using Roving tabindex
This example implements the features of the Radio Group Design Pattern for two radio groups -- one for choosing a pizza crust and another for choosing a delivery method. This implementation uses a roving tabindex for managing focus within the radio group.
Similar examples include:
- Radio Group Example Using aria-activedescendant: Radio button group that uses aria-activedescendantfor managing keyboard focus.
Example
Pizza Crust
              Regular crust
            
            
              Deep dish
            
            
              Thin crust
            
          Pizza Delivery
              Pickup
            
            
              Home Delivery
            
            
              Dine in
            
          Accessibility Features
- Uses CSS attribute selectors for synchronizing aria-checkedstate with the visual state indicator.
- 
            Uses CSS :hoverand:focuspseudo-selectors for styling visual keyboard focus and hover.- Focus indicator encompasses both radio button and label, making it easier to perceive which option is being chosen.
- Hover changes background of both radio button and label, making it easier to perceive that clicking either the label or button will activate the radio button.
 
Keyboard Support
| Key | Function | 
|---|---|
| Tab | 
 | 
| Space | 
 | 
| Right arrow | 
 | 
| Down arrow | 
 | 
| Left arrow | 
 | 
| Up arrow | 
 | 
Role, Property, State, and Tabindex Attributes
| Role | Attributes | Element | Usage | 
|---|---|---|---|
| radiogroup | div | 
 | |
| aria-labelledby="[IDREF]" | div | Refers to the element that contains the label of the radio group. | |
| radio | div | 
 | |
| tabindex="-1" | div | 
 | |
| tabindex="0" | div | 
 | |
| aria-checked="false" | div | 
 | |
| aria-checked="true" | div | 
 | 
Javascript and CSS Source Code
- CSS: radio.css
- Javascript: radioGroup.js
- Javascript: radioButton.js
HTML Source Code