Флажки и переключатели
Подход
По умолчанию браузерные флажки и переключатели заменены с помощью .form-check, набора классов для обоих типов ввода, которые улучшают макет и поведение их HTML-элементов, обеспечивают большую настраиваемость и кроссбраузерную совместимость. Флажки предназначены для выбора одного или нескольких вариантов в списке, а переключатели — для выбора одного варианта из нескольких.
Структурно, наши <input> и <label> являются соседними элементами по сравнению с <input> внутри <label>. Это немного более громоздко, так как вам необходимо указать id и for атрибуты для связывания <input> и <label>. Мы используем селектор соседних элементов (~) для всех наших <input> состояний, таких как :checked или :disabled. В сочетании с классом .form-check-label мы можем легко стилизовать текст каждого элемента в зависимости от состояния <input>.
Наши флажки используют пользовательские значки Bootstrap для обозначения отмеченных или неопределённых состояний.
Флажки
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="flexCheckDefault">
<label class="form-check-label" for="flexCheckDefault">
Default checkbox
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="flexCheckChecked" checked>
<label class="form-check-label" for="flexCheckChecked">
Checked checkbox
</label>
</div>
Неопределённое состояние
Флажки могут использовать псевдокласс :indeterminate при ручном установлении через JavaScript (нет доступного HTML-атрибута для его указания).
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="flexCheckIndeterminate">
<label class="form-check-label" for="flexCheckIndeterminate">
Indeterminate checkbox
</label>
</div>
Отключённое состояние
Добавьте атрибут disabled и связанные <label> автоматически стилизуются в более светлый цвет, чтобы указать состояние ввода.
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="flexCheckIndeterminateDisabled" disabled>
<label class="form-check-label" for="flexCheckIndeterminateDisabled">
Disabled indeterminate checkbox
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="flexCheckDisabled" disabled>
<label class="form-check-label" for="flexCheckDisabled">
Disabled checkbox
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="flexCheckCheckedDisabled" checked disabled>
<label class="form-check-label" for="flexCheckCheckedDisabled">
Disabled checked checkbox
</label>
</div>
Переключатели
<div class="form-check">
<input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault1">
<label class="form-check-label" for="flexRadioDefault1">
Default radio
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault2" checked>
<label class="form-check-label" for="flexRadioDefault2">
Default checked radio
</label>
</div>
Отключённое состояние
Добавьте атрибут disabled и связанные <label> автоматически стилизуются в более светлый цвет, чтобы указать состояние ввода.
<div class="form-check">
<input class="form-check-input" type="radio" name="flexRadioDisabled" id="flexRadioDisabled" disabled>
<label class="form-check-label" for="flexRadioDisabled">
Disabled radio
</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">
Disabled checked radio
</label>
</div>
Переключатели
Переключатель имеет разметку пользовательского флажка, но использует класс .form-switch для отображения переключателя. Рассмотрите использование role="switch" для более точного отображения характера элемента управления для технологий вспомогательного доступа, которые поддерживают эту роль. В устаревших технологиях вспомогательного доступа он просто будет объявлен как обычный флажок в качестве резервного варианта. Переключатели также поддерживают атрибут disabled.
<div class="form-check form-switch"> <input class="form-check-input" type="checkbox" role="switch" id="flexSwitchCheckDefault"> <label class="form-check-label" for="flexSwitchCheckDefault">Default switch checkbox input</label> </div> <div class="form-check form-switch"> <input class="form-check-input" type="checkbox" role="switch" id="flexSwitchCheckChecked" checked> <label class="form-check-label" for="flexSwitchCheckChecked">Checked switch checkbox input</label> </div> <div class="form-check form-switch"> <input class="form-check-input" type="checkbox" role="switch" id="flexSwitchCheckDisabled" disabled> <label class="form-check-label" for="flexSwitchCheckDisabled">Disabled switch checkbox input</label> </div> <div class="form-check form-switch"> <input class="form-check-input" type="checkbox" role="switch" id="flexSwitchCheckCheckedDisabled" checked disabled> <label class="form-check-label" for="flexSwitchCheckCheckedDisabled">Disabled checked switch checkbox input</label> </div>
По умолчанию (уложенные)
По умолчанию любое количество флажков и переключателей, являющихся соседними элементами, будут выстроены вертикально и будут соответствующим образом отформатированы с помощью .form-check.
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="defaultCheck1">
<label class="form-check-label" for="defaultCheck1">
Default checkbox
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="defaultCheck2" disabled>
<label class="form-check-label" for="defaultCheck2">
Disabled checkbox
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked>
<label class="form-check-label" for="exampleRadios1">
Default radio
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios2" value="option2">
<label class="form-check-label" for="exampleRadios2">
Second default radio
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios3" value="option3" disabled>
<label class="form-check-label" for="exampleRadios3">
Disabled radio
</label>
</div>
В одну строку
Группируйте флажки или переключатели в одной строке, добавив .form-check-inline к любому .form-check.
<div class="form-check form-check-inline"> <input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option1"> <label class="form-check-label" for="inlineCheckbox1">1</label> </div> <div class="form-check form-check-inline"> <input class="form-check-input" type="checkbox" id="inlineCheckbox2" value="option2"> <label class="form-check-label" for="inlineCheckbox2">2</label> </div> <div class="form-check form-check-inline"> <input class="form-check-input" type="checkbox" id="inlineCheckbox3" value="option3" disabled> <label class="form-check-label" for="inlineCheckbox3">3 (disabled)</label> </div>
<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>
Обратное расположение
Расположите флажки, переключатели и переключатели с противоположной стороны, используя модификаторный класс .form-check-reverse.
<div class="form-check form-check-reverse">
<input class="form-check-input" type="checkbox" value="" id="reverseCheck1">
<label class="form-check-label" for="reverseCheck1">
Reverse checkbox
</label>
</div>
<div class="form-check form-check-reverse">
<input class="form-check-input" type="checkbox" value="" id="reverseCheck2" disabled>
<label class="form-check-label" for="reverseCheck2">
Disabled reverse checkbox
</label>
</div>
<div class="form-check form-switch form-check-reverse">
<input class="form-check-input" type="checkbox" id="flexSwitchCheckReverse">
<label class="form-check-label" for="flexSwitchCheckReverse">Reverse switch checkbox input</label>
</div>
Без меток
Опустите обертывающую .form-check для флажков и переключателей без текста метки. Помните, что вы всё ещё должны предоставить какое-либо доступное имя для технологий вспомогательного доступа (например, используя aria-label). Подробности см. в разделе доступности форм.
<div> <input class="form-check-input" type="checkbox" id="checkboxNoLabel" value="" aria-label="..."> </div> <div> <input class="form-check-input" type="radio" name="radioNoLabel" id="radioNoLabel1" value="" aria-label="..."> </div>
Переключатели
Создайте флажки и переключатели, похожие на кнопки, используя стили .btn вместо .form-check-label на элементах <label>. Эти переключатели можно дополнительно сгруппировать в группу кнопок, если необходимо.
Переключатели флажков
<input type="checkbox" class="btn-check" id="btn-check" autocomplete="off"> <label class="btn btn-primary" for="btn-check">Single toggle</label> <input type="checkbox" class="btn-check" id="btn-check-2" checked autocomplete="off"> <label class="btn btn-primary" for="btn-check-2">Checked</label> <input type="checkbox" class="btn-check" id="btn-check-3" autocomplete="off" disabled> <label class="btn btn-primary" for="btn-check-3">Disabled</label>
<input type="checkbox" class="btn-check" id="btn-check-4" autocomplete="off"> <label class="btn" for="btn-check-4">Single toggle</label> <input type="checkbox" class="btn-check" id="btn-check-5" checked autocomplete="off"> <label class="btn" for="btn-check-5">Checked</label> <input type="checkbox" class="btn-check" id="btn-check-6" autocomplete="off" disabled> <label class="btn" for="btn-check-6">Disabled</label>
Переключатели переключателей
<input type="radio" class="btn-check" name="options" id="option1" autocomplete="off" checked> <label class="btn btn-secondary" for="option1">Checked</label> <input type="radio" class="btn-check" name="options" id="option2" autocomplete="off"> <label class="btn btn-secondary" for="option2">Radio</label> <input type="radio" class="btn-check" name="options" id="option3" autocomplete="off" disabled> <label class="btn btn-secondary" for="option3">Disabled</label> <input type="radio" class="btn-check" name="options" id="option4" autocomplete="off"> <label class="btn btn-secondary" for="option4">Radio</label>
<input type="radio" class="btn-check" name="options-base" id="option5" autocomplete="off" checked> <label class="btn" for="option5">Checked</label> <input type="radio" class="btn-check" name="options-base" id="option6" autocomplete="off"> <label class="btn" for="option6">Radio</label> <input type="radio" class="btn-check" name="options-base" id="option7" autocomplete="off" disabled> <label class="btn" for="option7">Disabled</label> <input type="radio" class="btn-check" name="options-base" id="option8" autocomplete="off"> <label class="btn" for="option8">Radio</label>
Стили обводки
Поддерживаются различные варианты .btn, такие как различные стили обводки.
<input type="checkbox" class="btn-check" id="btn-check-outlined" autocomplete="off"> <label class="btn btn-outline-primary" for="btn-check-outlined">Single toggle</label><br> <input type="checkbox" class="btn-check" id="btn-check-2-outlined" checked autocomplete="off"> <label class="btn btn-outline-secondary" for="btn-check-2-outlined">Checked</label><br> <input type="radio" class="btn-check" name="options-outlined" id="success-outlined" autocomplete="off" checked> <label class="btn btn-outline-success" for="success-outlined">Checked success radio</label> <input type="radio" class="btn-check" name="options-outlined" id="danger-outlined" autocomplete="off"> <label class="btn btn-outline-danger" for="danger-outlined">Danger radio</label>
CSS
Переменные Sass
Переменные для флажков:
$form-check-input-width: 1em;
$form-check-min-height: $font-size-base * $line-height-base;
$form-check-padding-start: $form-check-input-width + .5em;
$form-check-margin-bottom: .125rem;
$form-check-label-color: null;
$form-check-label-cursor: null;
$form-check-transition: null;
$form-check-input-active-filter: brightness(90%);
$form-check-input-bg: $input-bg;
$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color);
$form-check-input-border-radius: .25em;
$form-check-radio-border-radius: 50%;
$form-check-input-focus-border: $input-focus-border-color;
$form-check-input-focus-box-shadow: $focus-ring-box-shadow;
$form-check-input-checked-color: $component-active-color;
$form-check-input-checked-bg-color: $component-active-bg;
$form-check-input-checked-border-color: $form-check-input-checked-bg-color;
$form-check-input-checked-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-checked-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/></svg>");
$form-check-radio-checked-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$form-check-input-checked-color}'/></svg>");
$form-check-input-indeterminate-color: $component-active-color;
$form-check-input-indeterminate-bg-color: $component-active-bg;
$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color;
$form-check-input-indeterminate-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-indeterminate-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>");
$form-check-input-disabled-opacity: .5;
$form-check-label-disabled-opacity: $form-check-input-disabled-opacity;
$form-check-btn-check-disabled-opacity: $btn-disabled-opacity;
$form-check-inline-margin-end: 1rem;
Переменные для переключателей:
$form-switch-color: rgba($black, .25);
$form-switch-width: 2em;
$form-switch-padding-start: $form-switch-width + .5em;
$form-switch-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>");
$form-switch-border-radius: $form-switch-width;
$form-switch-transition: background-position .15s ease-in-out;
$form-switch-focus-color: $input-focus-border-color;
$form-switch-focus-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-focus-color}'/></svg>");
$form-switch-checked-color: $component-active-color;
$form-switch-checked-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>");
$form-switch-checked-bg-position: right center;
© 2011–2022 Twitter, Inc.
© 2011–2022 The Bootstrap Authors
Code licensed under the MIT License.
Documentation licensed under the Creative Commons Attribution License v3.0.
https://getbootstrap.com/docs/5.3/forms/checks-radios/