🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 表单 **基本实例** 单独的表单控件会被自动赋予一些全局样式。所有设置了`.form-control`类的`<input>`、`<textarea>`和`<select>`元素都将被默认设置宽度属性为`width: 100%;`。将`label`元素包裹到`.form-group`中可以更好地展示表单。 ```html <form> <div class="form-group"> <label for="username">username</label> <input type="text" class="form-control" id="username" placeholder="username"/> <span class="help-block">字母下划线3-8位</span> </div> <div class="form-group"> <label for="password">password</label> <input type="password" class="form-control" id="password" placeholder="password"/> <span class="help-block">密码为6-8位</span> </div> <div class="form-group"> <div class="checkbox"> <label><input type="checkbox">七天免密登陆</label> </div> <div class="form-group"> <input type="button" name="" id="login" value="登录" class="btn btn-success" /> <input type="button" name="" id="loginout" value="取消" class="btn btn-danger" /> </div> </form> ``` ![](https://img.kancloud.cn/f0/dd/f0dd8a3b01a568b8765e8f90d6c425b0_1033x427.png) ```markdown 注意:不要将 表单组 直接和 输入框 组混合使用。建议将 输入框组 嵌套到 表单组 中使用。 ``` ***** **内联表单** 如果需要创建一个表单,它的所有元素是内联的,向左对齐的,标签是并排的,请向 标签添加类*.form-inline*。**只在屏幕视口(viewport)至少在 768px 宽度时(屏幕视口宽度再小的话就会使表单折叠)。** 实例 **1**: ```html <form class="form-inline" > <div class="form-group"> <label for="username">username</label> <input type="text" class="form-control" id="username" placeholder="username"/> </div> <div class="form-group"> <label for="password">password</label> <input type="password" class="form-control" id="password" placeholder="password"/> </div> <div class="form-group"> <input type="button" name="" id="login" value="登录" class="btn btn-success" /> </div> </form> ``` ![](https://img.kancloud.cn/f2/93/f29394276c3560a6118f0769ddc1af4e_979x168.png) ```markdown 注意 : 1. 可能需要手动设置宽度。在 Bootstrap 中,输入框和单选/多选框控件默认被设置为`width: 100%;`宽度。在内联表单,我们将这些元素的宽度设置为`width: auto;`,多个控件就可以排列在同一行。 2. 一定要添加 label 标签。如果你没有为每个输入控件设置`label`标签,屏幕阅读器将无法正确识别。如果你不想让label显示在页面中,可以通过为`label`设置`.sr-only`类将其隐藏。 ``` 实例 **2**: ```html <form class="form-inline" > <div class="form-group"> <label class="sr-only" for="username">username</label> <input type="text" class="form-control" id="username" placeholder="username"/> </div> <div class="form-group"> <label class="sr-only" for="password">password</label> <input type="password" class="form-control" id="password" placeholder="password"/> </div> <div class="checkbox"> <label ><input type="checkbox" /> Remember me</label> </div> <div class="form-group"> <input type="button" name="" id="login" value="登录" class="btn btn-success" /> </div> </form> ``` ![](https://img.kancloud.cn/b2/57/b2578c9b10d112a8a1b3cc8563d1ca18_1030x160.png) ***** **水平排列的表单** 通过为表单添加`.form-horizontal`类,并联合使用 Bootstrap 预置的栅格类,可以将`label`标签和控件组水平并排布局。这样做将改变`.form-group`的行为,使其表现为栅格系统中的行(row),因此就无需再额外添加`.row`了。 ```html <form class="form-horizontal"> <div class="form-group"> <label for="emails" class="col-sm-2 control-label">Emails</label> <div class="col-sm-10"> <input type="email" class="form-control" id="emails" placeholder="emails"/> </div> </div> <div class="form-group"> <label for="password" class="col-sm-2 control-label">password</label> <div class="col-sm-10"> <input type="email" class="form-control" id="password" placeholder="password"/> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <div class="checkbox"> <label> <input type="checkbox"> 记住我 </label> </div> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <input type="button" name="" id="login" value="登录" class="btn btn-success" /> </div> </div> </form> ``` ![](https://img.kancloud.cn/d6/43/d643f05bb4483e59aacd43b453aa5c2f_1349x354.png) ***** **被支持的控件** **1.** 输入框 输入框包括大部分表单控件、文本输入域控件,还支持所有 HTML5 类型的输入控件: text、password、datetime、datetime-local、date、month、time、week、number、email、url、search、tel 和 color。 ```markdown 注意:必须添加类型声明。只有正确设置了`type`属性的输入控件才能被赋予正确的样式。 ``` **2.** 文本域 支持多行文本的表单控件。可根据需要改变`rows`属性。 ```html <textarea class="form-control" rows="3" placeholder="textarea" ></textarea> ``` ![](https://img.kancloud.cn/26/7b/267bd85776b61f13c9b2be638b2e4f0c_668x147.png) **3.** 多选和单选框 多选框(checkbox)用于选择列表中的一个或多个选项,而单选框(radio)用于从多个选项中只选择一个。 支持禁用的复选框和单选框,但要在父对象的悬停处提供“不允许”光标,您需要将.Disabled类添加到父级。 (1) . 默认外观(堆叠在一起) ```html <div class="checkbox"> <label> <input type="checkbox" value=""/>1 </label> </div> <div class="checkbox disabled"> <label> <input type="checkbox" value="" disabled="disabled"/>2 禁用 </label> </div> <div class="radio"> <label> <input type="radio" name="optionRadio" id="optionRadio1" value="option1"/>1 </label> </div> <div class="radio"> <label> <input type="radio" name="optionRadio" id="optionRadio2" value="option2"/>2 </label> </div> <div class="radio disabled"> <label> <input type="radio" name="optionRadio" id="optionRadio3" value="option3" disabled="disabled"/>3 </label> </div> ``` ![](https://img.kancloud.cn/dd/a9/dda9d5f748deb3a07e75b3459e94c2a4_680x192.png) (2) . 内联单选和多选框 有时候因为布局的需要,将复选框和单选按钮需要水平排列。如果checkbox需要水平排列,只需要在label标签上添加类名“checkbox-inline”;如果radio需要水平排列,只需要在label标签上添加类名“radio-inline”。 ```html <label class="checkbox-inline"> <input type="checkbox" value=""/>1 </label> <label class="checkbox-inline"> <input type="checkbox" value="" disabled="disabled"/>2 禁用 </label> <label class="checkbox-inline"> <input type="checkbox" value="" />3 </label> <label class="radio-inline"> <input type="radio" name="optionRadio" id="optionRadio1" value="option1"/>1 </label> <label class="radio-inline"> <input type="radio" name="optionRadio" id="optionRadio2" value="option2"/>2 </label> <label class="radio-inline"> <input type="radio" name="optionRadio" id="optionRadio3" value="option3" disabled="disabled"/>3 </label> ``` ![](https://img.kancloud.cn/1f/fe/1ffe67f0342e9126ee40b76b81449492_648x80.png) (3) . 不带label文本的Checkbox 和 radio 如果在`<label>`中没有文字,输入框会放到适当的位置。**当前只对非行内复选框和单选钮起作用**。 ```html <div class="checkbox"> <label> <input type="checkbox" id="blankCheckbox" value="option1"> </label> </div> <div class="radio"> <label> <input type="radio" name="blankRadio" id="blankRadio1" value="option1"> </label> </div> ``` ![](https://img.kancloud.cn/63/4c/634c76df6943ccd9fc700cbd2534dd75_751x93.png) (4) .下拉列表(select) 很多原生选择菜单 - 即在 Safari 和 Chrome 中 - 的圆角是无法通过修改`border-radius`属性来改变的。 实例 1 : ```html <select class="form-control" > <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> ``` ![](https://img.kancloud.cn/a8/31/a831e1717679f283c5073a59451f0264_698x257.png) 实例 2 :对于标记了`multiple`属性的`<select>`控件来说,默认显示多选项。 ```html <select multiple class="form-control" > <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> ``` ![](https://img.kancloud.cn/0a/78/0a78fa7d900af965951ab48703f2f08c_672x208.png) ***** **静态控件** 如果需要在表单中将一行纯文本和`label`元素放置于同一行,为`<p>`元素添加`.form-control-static`类即可。 ```html <form class="form-horizontal"> <div class="form-group"> <label for="emails" class="col-sm-2 control-label">Emails</label> <div class="col-sm-10"> <p class="form-control-static">email@example.com</p> </div> </div> <div class="form-group"> <label for="password" class="col-sm-2 control-label">password</label> <div class="col-sm-10"> <input type="email" class="form-control" id="password" placeholder="password"/> </div> </div> </form> ``` ![](https://img.kancloud.cn/ea/0e/ea0e8fc51cf4ed6a1af9273c861d138f_1241x178.png) ***** **焦点状态** 我们将某些表单控件的默认`outline`样式移除,然后对`:focus`状态添加`box-shadow`属性。 ![](https://img.kancloud.cn/39/9e/399e0bbc2f853ea01ca145817e48faa2_1066x107.png) ***** **禁用状态** 给输入框设置`disabled`属性可以禁止其与用户有任何交互(焦点、输入等)。被禁用的输入框颜色更浅,并且还添加了`not-allowed`鼠标状态。 ```html <input class="form-control" id="disabledInput" type="text" placeholder="Disabled input here..." disabled> ``` ![](https://img.kancloud.cn/fb/38/fb38ea4dda66387d64bf1fe9afbe8af5_1224x76.png) ***** (1)被禁用的`fieldset` 为`<fieldset>`设置`disabled`属性,可以禁用`<fieldset>`中包含的所有控件。但是,如果其中包含有a 标签,它的链接功能不受影响,如果要阻止用户获取到这些链接,建议使用自定义 JavaScript 来禁用这些链接。 ```html <form class="form-horizontal"> <fieldset disabled> <div class="form-group"> <label for="emails" class="col-sm-2 control-label">Emails</label> <div class="col-sm-10"> <input type="email" class="form-control" id="emails" placeholder="emails"/> </div> </div> <div class="form-group"> <label for="password" class="col-sm-2 control-label">password</label> <div class="col-sm-10"> <input type="email" class="form-control" id="password" placeholder="password"/> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <div class="checkbox"> <label> <input type="checkbox"> 记住我 </label> </div> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <input type="button" name="" id="login" value="登录" class="btn btn-success" /> </div> </div> </fieldset> </form> ``` ![](https://img.kancloud.cn/3c/aa/3caa352af7b4a696560b048886d5d86e_1219x339.png) ***** **只读状态** 为输入框设置`readonly`属性可以禁止用户修改输入框中的内容。处于只读状态的输入框颜色更浅(就像被禁用的输入框一样),但是仍然保留标准的鼠标获取焦点状态。 ```html <input class="form-control" type="text" placeholder="Readonly input here…" readonly> ``` ***** **Help text 辅助文本** 将辅助文本与表单控件关联。辅助文本应该使用aria describedby属性显式地与它相关联的表单控件相关联。也就是说,如果需要个某个表单控件添加辅助文本,需要给这个控件添加aria-describedby属性,属性值将是相关联的辅助文本元素所对应的id 属性值。这将确保在用户聚焦或进入控件时宣布此辅助文本。 ```html <label for="inputHelp">Input with help text</label> <input type="text" id="inputHelp" class="form-control" aria-describedby="helpBlock"> <span id="helpBlock" class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</span> ``` ![](https://img.kancloud.cn/6a/55/6a552003ebe66de4d8c18bac32c11449_886x141.png) ***** **校验状态** Bootstrap 对表单控件的校验状态,如 error、warning 和 success 状态,都定义了样式。使用时,添加`.has-warning`、`.has-error`或`.has-success`类到这些控件的父元素即可。任何包含在此元素之内的`.control-label`、`.form-control`和`.help-block`元素都将接受这些校验状态的样式。 ```markdown 将验证状态传达给辅助设备和盲人用户。使用这些校验样式只是为表单控件提供一个可视的、基于色彩的提示,但是并不能将这种提示信息传达给使用辅助设备的用户 - 例如屏幕阅读器 - 或者色盲用户。 ``` **1.** 颜色状态显示 ```html <div class="form-group has-success"> <label for="inputHelp">Input with success</label> <input type="text" id="inputHelp" class="form-control" aria-describedby="helpBlock"> <span id="helpBlock" class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</span> </div> <div class="form-group has-warning"> <label for="inputHelp">Input with warning</label> <input type="text" id="inputHelp" class="form-control"> </div> <div class="form-group has-error"> <label for="inputHelp">Input with error</label> <input type="text" id="inputHelp" class="form-control"> </div> <div class="has-success"> <label class="checkbox-inline"> <input type="checkbox" value=""/>1 </label> </div> <div class="has-warning"> <label class="checkbox-inline"> <input type="checkbox" value="" />2 </label> </div> <div class="has-error"> <label class="checkbox-inline"> <input type="checkbox" value="" />3 </label> </div> ``` ![](https://img.kancloud.cn/a7/cf/a7cf99f1c3acb692ca98ded07d212ef5_887x503.png) **2.** 添加额外的图标状态 你还可以针对校验状态为输入框添加额外的图标。只需设置相应的`.has-feedback`类并添加正确的图标即可。**图标只能使用在文本输入框`<input class="form-control">`元素上** ```markdown 1. 对于不带有`label`标签的输入框以及右侧带有附加组件的输入框组,需要手动为其图标定位。但是建议给所有输入框添加`label`标签,如果你不希望将`label`标签展示出来,可以通过添加`.sr-only`类将它隐藏起来。 2. 为了确保可以正确传达一个图标的含义,额外的隐藏的文本应包含在`.sr-only`类中,并明确关联使用了`aria-describedby`的表单控件。 ``` ```html <div class="form-group has-success has-feedback"> <label for="inputSuccess">Input with success</label> <input type="text" id="inputSuccess" class="form-control" aria-describedby="inputSuccess"> <span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span> </div> <div class="form-group has-warning has-feedback"> <label for="inputWarning">Input with warning</label> <input type="text" id="inputWarning" class="form-control" aria-describedby="inputWarning"> <span class="glyphicon glyphicon-warning-sign form-control-feedback" aria-hidden="true"></span> </div> <div class="form-group has-error has-feedback"> <label for="inputError">Input with error</label> <input type="text" id="inputError" class="form-control" aria-describedby="inputError"> <span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span> </div> ``` ![](https://img.kancloud.cn/e7/e1/e7e189d8bc3055db54f2dd9c81b0ab1d_885x347.png) ***** **控件尺寸** 通过`.input-lg`类似的类可以为控件设置高度,通过`.col-lg-*`类似的类可以为控件设置宽度。 **1.** 高度尺寸 创建大一些或小一些的表单控件以匹配按钮尺寸。 ```html <input class="form-control input-lg" type="text" placeholder=".input-lg 最大高度"><br/> <input class="form-control" type="text" placeholder="Default input 默认高度"><br/> <input class="form-control input-sm" type="text" placeholder=".input-sm 最小宽度"><br/> <select class="form-control input-lg"><option>input-lg</option></select><br/> <select class="form-control"><option>默认高度</option></select><br/> <select class="form-control input-sm"><option>input-sm</option></select><br/> ``` ![](https://img.kancloud.cn/26/08/26085030fc18b664ab9a57d869a51d1d_840x524.png) **2.** 水平排列的表单组的尺寸 通过添加`.form-group-lg`或`.form-group-sm`类,给`.form-horizontal`包裹的`label`元素和表单控件快速设置尺寸。 ```html <form action="" class="form-horizontal"> <div class="form-group form-group-lg"> <label for="formGroup" class="col-sm-2 control-label">最大高度</label> <div class="col-sm-10"> <input type="text" class="form-control" id="formGroup" placeholder="最大高度"> </div> </div> <div class="form-group form-group-sm"> <label for="formGroups" class="col-sm-2 control-label">最小高度</label> <div class="col-sm-10"> <input type="text" class="form-control" id="formGroups" placeholder="最小高度"> </div> </div> </form> ``` ![](https://img.kancloud.cn/dd/35/dd3586f9082a1bd5a8c2d50d01332066_1197x188.png) **3.** 调整列(column)尺寸 用栅格系统中的列(column)包裹输入框或其任何父元素,都可很容易的为其设置宽度。 ```html <div class="row"> <div class="col-xs-2"> <input type="text" class="form-control" placeholder=".col-xs-2"> </div> <div class="col-xs-3"> <input type="text" class="form-control" placeholder=".col-xs-3"> </div> <div class="col-xs-4"> <input type="text" class="form-control" placeholder=".col-xs-4"> </div> </div> ``` ![](https://img.kancloud.cn/fb/5c/fb5c141de16e53d55b7b7b670440397a_1038x77.png)