Select Menu
View StorybookA select menu is an input control that allows users to choose one option from a list.
Classes
Class | Applies to | Description |
---|
Examples
Base Styles
A select is normally paired with a label, but there are times when it can be used without a label. Don't rely on the placeholder text as a label.
<div>
<div class="d-label">
<label for="Dialtone--SelectExample1">...</label>
</div>
<div class="d-select">
<select class="d-select__input" id="Dialtone--SelectExample1">
<option value="" selected>...</option>
<option value="...">...</option>
<option value="...">...</option>
<option value="...">...</option>
</select>
</div>
</div>
<div>
<div class="d-label">
<label for="Dialtone--SelectExample2">...</label>
</div>
<div class="d-select d-select--disabled">
<select class="d-select__input" id="Dialtone--SelectExample2" disabled>
<option value="" selected>...</option>
<option value="...">...</option>
<option value="...">...</option>
<option value="...">...</option>
</select>
</div>
</div>
With Description Text
<div class="d-label">...</div>
<div class="d-description">...</div>
<div class="d-select">
<select class="d-select__input" id="Dialtone--SelectExample3">...</select>
</div>
With Validation States
Provides feedback to the user based on their interaction, or lack thereof, with a select.
<div>
<div class="d-label">...</div>
<div class="d-select">
<select class="d-select__input d-select__input--error">...</select>
</div>
<div class="d-validation-message d-validation-message--error">...</div>
</div>
<div>
<div class="d-label">...</div>
<div class="d-select">
<select class="d-select__input d-select__input--success">...</select>
</div>
<div class="d-validation-message d-validation-message--success">...</div>
</div>
<div>
<div class="d-label">...</div>
<div class="d-select">
<select class="d-select__input d-select__input--warning">...</select>
</div>
<div class="d-validation-message d-validation-message--warning">...</div>
</div>
Sizes
We offer different sizes for instances in which the interface requires a smaller or larger select. In general, though, use the base (medium) size select as much as possible, especially in forms.
<div>
<div class="d-label d-label--xs">...</div>
<div class="d-select d-select--xs">
<select class="d-select__input">...</select>
</div>
</div>
<div>
<div class="d-label d-label--sm">...</div>
<div class="d-select d-select--sm">
<select class="d-select__input">...</select>
</div>
</div>
<div>
<div class="d-label">...</div>
<div class="d-select">
<select class="d-select__input">...</select>
</div>
</div>
<div>
<div class="d-label d-label--lg">...</div>
<div class="d-select d-select--lg">
<select class="d-select__input">...</select>
</div>
</div>
<div>
<div class="d-label d-label--xl">...</div>
<div class="d-select d-select--xl">
<select class="d-select__input">...</select>
</div>
</div>
Accessibility
- Make sure the
label
for
attribute match the selectid
. - Avoiding removing
labels
. Labelled selects are user-friendly. - Avoid relying on placeholder text as a substitute for a label.
- Avoid customizing the placeholder text.
- If the select is a required field, use the
aria-required
property and use the validation message for input errors. - Select with validation errors should have
aria-describedby
with theid
of the validation message.