Bootstrap 5 Radio component
Radio component is used to allow a user to select a single choice from a number of options. A radio button is generally displayed in a radio group.
Overview
Browser default checkboxes and radios are replaced with the help of .form-check, a series of classes for both input types that improves the layout and behavior of their HTML elements, that provide greater customization and cross browser consistency.
Structurally, our <input>s and <label>s are sibling elements as opposed to an <input> within a <label>. This is slightly more verbose as you must specify id and for attributes to relate the <input> and <label>. We use the sibling selector (~) for all our <input> states, like :checked or :disabled. When combined with the .form-check-label class, we can easily style the text for each item based on the <input>’s state.
We use the sibling selector (~) for all our <input> states, like :checked or :disabled. When combined with the .form-check-label class, we can easily style the text for each item based on the <input>’s state.
Basic radio group
Radio buttons should have the most commonly used option selected by default in a radio group.
<div class="form-check">
<input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault1" checked />
<label class="form-check-label" for="flexRadioDefault1">Kittens</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault2" />
<label class="form-check-label" for="flexRadioDefault2">Puppies</label>
</div>Disabled
Add the disabled attribute and the associated <label>s are automatically styled to match with a lighter color to help indicate the input’s state.
<div class="form-check">
<input class="form-check-input" type="radio" name="flexRadioDisabled" id="flexRadioDisabled" disabled />
<label class="form-check-label" for="flexRadioDisabled">
Kittens
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="flexRadioDisabled" id="flexRadioCheckedDisabled" checked disabled />
<label class="form-check-label" for="flexRadioCheckedDisabled">
Puppies
</label>
</div>Radio toggle buttons
Radio button group can have a single entry checked at any one time.
Create a radio button group by using .btn styles rather than .form-check-label on the <label> elements with a button group. See an example of Radio button group.
<div class="btn-group">
<input type="radio" class="btn-check" name="options" id="option1" autocomplete="off" checked />
<label class="btn btn-default" for="option1">Day</label>
<input type="radio" class="btn-check" name="options" id="option2" autocomplete="off" />
<label class="btn btn-default" for="option2">Week</label>
<input type="radio" class="btn-check" name="options" id="option3" autocomplete="off" />
<label class="btn btn-default" for="option3">Month</label>
<input type="radio" class="btn-check" name="options" id="option4" autocomplete="off" />
<label class="btn btn-default" for="option4">Year</label>
<input type="radio" class="btn-check" name="options" id="option5" autocomplete="off" disabled />
<label class="btn btn-default" for="option5">All</label>
</div>Without labels
Omit the wrapping .form-check for checkboxes and radios that have no label text. Remember to still provide some form of accessible name for assistive technologies (for instance, using aria-label).
<input class="form-check-input" type="radio" name="radioNoLabel" id="radioNoLabel1" value="" aria-label="..." checked />
<input class="form-check-input" type="radio" name="radioNoLabel" id="radioNoLabel2" value="" aria-label="..." />
<input class="form-check-input" type="radio" name="radioNoLabel" id="radioNoLabel3" value="" aria-label="..." disabled />Inline
Group checkboxes or radios on the same horizontal row by adding .form-check-inline to any .form-check.
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1" />
<label class="form-check-label" for="inlineRadio1">1</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2" />
<label class="form-check-label" for="inlineRadio2">2</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3" disabled />
<label class="form-check-label" for="inlineRadio3">3 (disabled)</label>
</div>Right to Left
Put your radios on the opposite side with the .form-check-reverse modifier class.
<div class="form-check form-check-reverse">
<input class="form-check-input" type="radio" value="" name="reverseRadio" id="reverseRadio1" checked />
<label class="form-check-label" for="reverseRadio1">
Radio label one
</label>
</div>
<div class="form-check form-check-reverse">
<input class="form-check-input" type="radio" value="" name="reverseRadio" id="reverseRadio2" />
<label class="form-check-label" for="reverseRadio2">
Radio label two
</label>
</div>Accessibility
(WAI-ARIA: https://www.w3.org/WAI/ARIA/apg/patterns/radiobutton/)
- All form controls should have labels, and this includes radio buttons, checkboxes, and switches. In most cases, this is done by using the
<label>HTML element. - When a label can’t be used, it’s necessary to add an attribute directly to the input component. In this case, you can apply the additional attribute (e.g.
aria-label,aria-labelledby,title) on the element.