在本章中,我們将學習如何使用 Bootstrap 建立表單。Bootstrap 通過一些簡單的 HTML 标簽和擴充的類即可建立出不同樣式的表單。
Bootstrap 提供了下列類型的表單布局:
垂直表單(預設)
内聯表單
水準表單
基本的表單結構是 Bootstrap 自帶的,個别的表單控件自動接收一些全局樣式。下面列出了建立基本表單的步驟:
向父 <form> 元素添加 role="form"。
把标簽和控件放在一個帶有 class .form-group 的 <div> 中。這是擷取最佳間距所必需的。
向所有的文本元素 <input>、<textarea> 和 <select> 添加 class ="form-control" 。
<form role="form">
<div class="form-group">
<label for="name">名稱</label>
<input type="text" class="form-control" id="name" placeholder="請輸入名稱">
</div>
<label for="inputfile">檔案輸入</label>
<input type="file" id="inputfile">
<p class="help-block">這裡是塊級幫助文本的執行個體。</p>
<div class="checkbox">
<label>
<input type="checkbox">請打勾
</label>
<button type="submit" class="btn btn-default">送出</button>
</form>
結果如下所示:
如果需要建立一個表單,它的所有元素是内聯的,向左對齊的,标簽是并排的,請向 <form> 标簽添加 class .form-inline。
<form class="form-inline" role="form">
<label class="sr-only" for="name">名稱</label>
<label class="sr-only" for="inputfile">檔案輸入</label>
預設情況下,Bootstrap 中的 input、select 和 textarea 有 100% 寬度。在使用内聯表單時,您需要在表單控件上設定一個寬度。
使用 class .sr-only,您可以隐藏内聯表單的标簽。
水準表單與其他表單不僅标記的數量上不同,而且表單的呈現形式也不同。如需建立一個水準布局的表單,請按下面的幾個步驟進行:
向父 <form> 元素添加 class .form-horizontal。
把标簽和控件放在一個帶有 class .form-group 的 <div> 中。
向标簽添加 class .control-label。
<form class="form-horizontal" role="form">
<label for="firstname" class="col-sm-2 control-label">名字</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="firstname" placeholder="請輸入名字">
<label for="lastname" class="col-sm-2 control-label">姓</label>
<input type="text" class="form-control" id="lastname" placeholder="請輸入姓">
<div class="col-sm-offset-2 col-sm-10">
<input type="checkbox">請記住我
<button type="submit" class="btn btn-default">登入</button>
Bootstrap 支援最常見的表單控件,主要是 input、textarea、checkbox、radio 和 select。
最常見的表單文本字段是輸入框 input。使用者可以在其中輸入大多數必要的表單資料。Bootstrap 提供了對所有原生的 HTML5 的 input 類型的支援,包括:text、password、datetime、datetime-local、date、month、time、week、number、email、url、search、tel 和 color。适當的 type 聲明是必需的,這樣才能讓 input 獲得完整的樣式。
<label for="name">标簽</label>
<input type="text" class="form-control" placeholder="文本輸入">
當您需要進行多行輸入的時,則可以使用文本框 textarea。必要時可以改變 rows 屬性(較少的行 = 較小的盒子,較多的行 = 較大的盒子)。
<label for="name">文本框</label>
<textarea class="form-control" rows="3"></textarea>
複選框和單選按鈕用于讓使用者從一系列預設定的選項中進行選擇。
當建立表單時,如果您想讓使用者從清單中選擇若幹個選項時,請使用 checkbox。如果您限制使用者隻能選擇一個選項,請使用 radio。
對一系列複選框和單選框使用 .checkbox-inline 或 .radio-inline class,控制它們顯示在同一行上。
下面的執行個體示範了這兩種類型(預設和内聯):
<label for="name">預設的複選框和單選按鈕的執行個體</label>
<label><input type="checkbox" value="">選項 1</label>
<label><input type="checkbox" value="">選項 2</label>
<div class="radio">
<input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked> 選項 1
<input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">選項 2 - 選擇它将會取消選擇選項 1
<label for="name">内聯的複選框和單選按鈕的執行個體</label>
<div>
<label class="checkbox-inline">
<input type="checkbox" id="inlineCheckbox1" value="option1"> 選項 1
<input type="checkbox" id="inlineCheckbox2" value="option2"> 選項 2
<input type="checkbox" id="inlineCheckbox3" value="option3"> 選項 3
<label class="radio-inline">
<input type="radio" name="optionsRadiosinline" id="optionsRadios3" value="option1" checked> 選項 1
<input type="radio" name="optionsRadiosinline" id="optionsRadios4" value="option2"> 選項 2
當您想讓使用者從多個選項中進行選擇,但是預設情況下隻能選擇一個選項時,則使用選擇框。
使用 <select> 展示清單選項,通常是那些使用者很熟悉的選擇清單,比如州或者數字。
使用 multiple="multiple" 允許使用者選擇多個選項。
下面的執行個體示範了這兩種類型(select 和 multiple):
<label for="name">選擇清單</label>
<select class="form-control">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
<label for="name">可多選的選擇清單</label>
<select multiple class="form-control">
當您需要在一個水準表單内的表單标簽後放置純文字時,請在 <p> 上使用 class .form-control-static。
<label class="col-sm-2 control-label">Email</label>
<p class="form-control-static">[email protected]</p>
<label for="inputPassword" class="col-sm-2 control-label">密碼</label>
<input type="password" class="form-control" id="inputPassword" placeholder="請輸入密碼">
除了 :focus 狀态(即,使用者點選 input 或使用 tab 鍵聚焦到 input 上),Bootstrap 還為禁用的輸入框定義了樣式,并提供了表單驗證的 class。
當輸入框 input 接收到 :focus 時,輸入框的輪廓會被移除,同時應用 box-shadow。
如果您想要禁用一個輸入框 input,隻需要簡單地添加 disabled 屬性,這不僅會禁用輸入框,還會改變輸入框的樣式以及當滑鼠的指針懸停在元素上時滑鼠指針的樣式。
對 <fieldset> 添加 disabled 屬性來禁用 <fieldset> 内的所有控件。
Bootstrap 包含了錯誤、警告和成功消息的驗證樣式。隻需要對父元素簡單地添加适當的 class(.has-warning、 .has-error 或 .has-success)即可使用驗證狀态。
下面的執行個體示範了所有控件狀态:
<label class="col-sm-2 control-label">聚焦</label>
<input class="form-control" id="focusedInput" type="text" value="該輸入框獲得焦點...">
<label for="inputPassword" class="col-sm-2 control-label">禁用</label>
<input class="form-control" id="disabledInput" type="text" placeholder="該輸入框禁止輸入..." disabled>
<fieldset disabled>
<label for="disabledTextInput" class="col-sm-2 control-label">禁用輸入(Fieldset disabled)</label>
<input type="text" id="disabledTextInput" class="form-control" placeholder="禁止輸入">
<label for="disabledSelect" class="col-sm-2 control-label">禁用選擇菜單(Fieldset disabled)</label>
<select id="disabledSelect" class="form-control">
<option>禁止選擇</option>
</fieldset>
<div class="form-group has-success">
<label class="col-sm-2 control-label" for="inputSuccess">輸入成功</label>
<input type="text" class="form-control" id="inputSuccess">
<div class="form-group has-warning">
<label class="col-sm-2 control-label" for="inputWarning">輸入警告</label>
<input type="text" class="form-control" id="inputWarning">
<div class="form-group has-error">
<label class="col-sm-2 control-label" for="inputError">輸入錯誤</label>
<input type="text" class="form-control" id="inputError">
您可以分别使用 class .input-lg 和 .col-lg-* 來設定表單的高度和寬度。下面的執行個體示範了這點:
<input class="form-control input-lg" type="text" placeholder=".input-lg">
<input class="form-control" type="text" placeholder="預設輸入">
<input class="form-control input-sm" type="text" placeholder=".input-sm">
<div class="form-group"></div>
<select class="form-control input-lg">
<option value="">.input-lg</option>
<option value="">預設選擇</option>
<select class="form-control input-sm">
<option value="">.input-sm</option>
<div class="row">
<div class="col-lg-2">
<input type="text" class="form-control" placeholder=".col-lg-2">
<div class="col-lg-3">
<input type="text" class="form-control" placeholder=".col-lg-3">
<div class="col-lg-4">
<input type="text" class="form-control" placeholder=".col-lg-4">
Bootstrap 表單控件可以在輸入框 input 上有一個塊級幫助文本。為了添加一個占用整個寬度的内容塊,請在 <input> 後使用 .help-block。下面的執行個體示範了這點:
<span>幫助文本執行個體</span>
<input class="form-control" type="text" placeholder="">
<span class="help-block">一個較長的幫助文本塊,超過一行,
需要擴充到下一行。本執行個體中的幫助文本總共有兩行。</span>