這篇來講我覺得蠻重要也蠻容易搞錯的核取方塊和選項按鈕。
Checks(核取方塊)是多選, radios(選項按鈕)是單選。
.from-check
類別,讓它們格式化,它們的<input>
都要加上.from-check-input
類別,且<label>
也要加上.form-check-label
。<label>
的for="..."
要對應<input>
的id
(這樣點擊label就可以選到該選項)。input
請加上type="checkbox"
;而radio(選項按鈕)的input
請加上type="radio"
。這是check-box的範例程式碼:
<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>
效果:
這是 radio的範例程式碼,記得同一組radio的name
要一樣,才能單選:
<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>
效果:
如果在<input>
上加上disabled
的話,會連帶<label>
的樣式改變,變成較淺的色彩。
如下圖:
切換開關是基於check box的型式再加上.form-switch
完成的,如果使用role="switch"
可以更明確傳達它的角色給輔助工具,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>
效果如下:
同層級的 check box 與 radio 預設會垂直堆疊排列,如圖:
如果要使他們水平排列可以把 .form-check-inline
加到任何 .form-check
上,下面是以check box為例的範例程式碼:
<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>
效果如下:
事實上<input>
沒有.form-check
在外層包覆、沒有<label>
的話也是可以正常運作的,不過需要使用像是 aria-label
等的親和性名稱提升網頁親和性。
使用.btn
加在<label>
上而不是.form-check-label
可以創建按鈕型式的check box 與 radio 功能,此外它也支持disabled
屬性。
check box功能的btn 切換按鈕之範例程式碼:
<input type="checkbox" class="btn-check" id="btn-check" autocomplete="off">
<label class="btn btn-primary" for="btn-check">Single toggle</label>
效果:
radio 功能的 btn 切換按鈕之範例程式碼:
<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>
效果:(就變只能單選了)
此外,btn 切換按鈕也支持.btn-outline-*
,可以為它們添加outline樣式。