Checks and radios复选框和单选钮
Create consistent cross-browser and cross-device checkboxes and radios with our completely rewritten checks component.使用完全重写的检查组件创建一致的跨浏览器和跨设备复选框和收音机。
Approach实现方法
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. .form-check
和用于两种输入类型的一系列类的帮助下被替换,这些类改进了HTML元素的布局和行为,提供了更好的自定义和跨浏览器一致性。Checkboxes are for selecting one or several options in a list, while radios are for selecting one option from many.复选框用于在列表中选择一个或多个选项,而收音机用于从多个选项中选择一个选项。
Structurally, our 在结构上,我们的<input>
s and <label>
s are sibling elements as opposed to an <input>
within a <label>
. <input>
和<label>
是同辈元素,而不是<input>
在<label>
中。This is slightly more verbose as you must specify 由于必须指定id
and for
attributes to relate the <input>
and <label>
. id
和for
属性来关联<input>
及<label>
。We use the sibling selector (我们对所有~
) for all our <input>
states, like :checked
or :disabled
. <input>
状态(譬如:checked
或:disabled
)使用同辈选择器(~
)。When combined with the 在与.form-check-label
class, we can easily style the text for each item based on the <input>
’s state..form-check-label
类结合使用时,我们可以根据<input>
的状态来轻松样式化每一项的文本。
Our checks use custom Bootstrap icons to indicate checked or indeterminate states.我们的检查使用自定义Bootstrap图标来指示检查或不确定状态。
Checks勾选
<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不确定性
Checkboxes can utilize the 当通过JavaScript手动设置时(没有可用的HTML属性来指定它),复选框可以利用:indeterminate
pseudo class when manually set via JavaScript (there is no available HTML attribute for specifying it).:indeterminate
。
<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禁用
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.disabled
属性,则关联的<label>
将自动设置样式,使其与较浅的颜色相匹配,以帮助指示输入的状态。
<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>
Radios单选钮
<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禁用
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.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>
Switches开关
A switch has the markup of a custom checkbox but uses the 开关具有自定义复选框的标记,但使用.form-switch
class to render a toggle switch. .form-switch
类呈现切换开关。Switches also support the 开关还支持disabled
attribute.disabled
属性。
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" 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" 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" 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" id="flexSwitchCheckCheckedDisabled" checked disabled>
<label class="form-check-label" for="flexSwitchCheckCheckedDisabled">Disabled checked switch checkbox input</label>
</div>
Default (stacked)默认(堆叠)
By default, any number of checkboxes and radios that are immediate sibling will be vertically stacked and appropriately spaced with 默认情况下,直接同级的任意数量的复选框和收音机将垂直堆叠,并使用.form-check
..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>
Inline内联
Group checkboxes or radios on the same horizontal row by adding 通过将.form-check-inline
to any .form-check
..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>
Without labels不带标签
Omit the wrapping 对于没有标签文本的复选框和单选钮,可以省略包装.form-check
for checkboxes and radios that have no label text. .form-check
。Remember to still provide some form of accessible name for assistive technologies (for instance, using 记住,仍然要为辅助技术提供某种形式的可访问名称(例如,使用aria-label
). aria-label
)。See the forms overview accessibility section for details.有关详细信息,请参阅表单概述辅助功能部分。
<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>
Toggle buttons切换按钮
Create button-like checkboxes and radio buttons by using 在.btn
styles rather than .form-check-label
on the <label>
elements. <label>
元素上使用.btn
样式而不是.form-check-label
,将创建一个类似按钮的复选框和单选钮。These toggle buttons can further be grouped in a button group if needed.如果需要,这些切换按钮可以进一步分组到按钮组中。
Checkbox toggle buttons复选框切换按钮
<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>
Radio toggle buttons单选切换按钮
<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>
Outlined styles轮廓样式
Different variants of 支持.btn
, such at the various outlined styles, are supported..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>
Sass
Variables变量
$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: 1px solid rgba($black, .25);
$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: $input-btn-focus-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 10l3 3l6-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;