Bootstrap之表单

ε祈祈猫儿з 提交于 2020-02-07 04:35:36

基础表单

表单中常见的元素主要包括:文本输入框下拉选择框、单选按钮、复选按钮文本域按钮等。
 

当然表单除了这几个元素之外,还有inputselecttextarea等元素,在Bootstrap框架中,通过定制了一个类名`form-control`,也就是说,如果这几个元素使用了类名“form-control”,将会实现一些设计上的定制效果。

1、宽度变成了100%

2、设置了一个浅灰色(#ccc)的边框

3、具有4px的圆角

4、设置阴影效果,并且元素得到焦点之时,阴影和边框效果会有所变化

5、设置了placeholder的颜色为#999

注意:类名“.form-control”是添加在 input、select上面的。只控制输入框的样式。
注意:当 input 的类型是 checkbox 或者 radio 时,<label> 是包裹住了 <input> 的>。
 
水平表单

Bootstrap框架默认的表单是垂直显示风格,但很多时候我们需要的水平表单风格(标签居左,表单控件居右)见下图。

<form class="form-horizontal" role="form">
<div class="form-group">
  <label for="inputEmail3" class="col-sm-2 control-label">邮箱</label>
  <div class="col-sm-10">
  <input type="email" class="form-control" id="inputEmail3" placeholder="请输入您的邮箱地址">
  </div>
</div>
从上面可以看出水平表单的使用方法:
1. 为 form 增添 .form-horizontal 类。
2. 用一个 div.form-group 包裹 label 和 input
3. 为 label 增添 .col-sm-2 .control-label
4. 用一个 .col-sm-10 的div 包裹 input
5. 为 input 增添 form-control 类
 
 
在<form>元素上使用类名“form-horizontal”主要有以下几个作用:
1、设置表单控件padding和margin值。
2、改变“form-group”的表现形式,类似于网格系统的“row”。
 
内联表单
有时候我们需要将表单的控件都在一行内显示,类似这样的:
 
 
只需要在<form>元素中添加类名“form-inline”即可。
 
如果你要在input前面添加一个label标签时,会导致input换行显示。如果你必须添加这样的一个label标签,并且不想让input换行,你需要将label标签也放在div容器“form-group”中,如:
 
<form class="form-inline" role="form">
<div class="form-group">
  <label class="sr-only" for="exampleInputEmail2">邮箱</label>
  <input type="email" class="form-control" id="exampleInputEmail2" placeholder="请输入你的邮箱地址">
</div>
 
你或许会问,为什么添加了label标签,而且没有放置在”form-group”这样的容器中,input也不会换行;还有label标签没显示出来。如果你仔细看,在label标签运用了一个类名“sr-only”,标签没显示就是这个样式将标签隐藏了。
 
注意:那么Bootstrap为什么要这么做呢?这样不是多此一举吗?其实不是的,如果没有为输入控件设置label标签,屏幕阅读器将无法正确识别。这也是Bootstrap框架另一个优点之处,为残障人员进行了一定的考虑。
 
除了checkbox和radio,每一个表单控件都用一个 div.form-group 包裹?
另外,对于内联的 input checkbox radio 一个div.form-group 就包裹了所有要内联的表单控件?
 
表单控件(输入框input)
单行输入框,常见的文本输入框,也就是inputtype属性值为text。在Bootstrap中使用input时也必须添加type类型,如果没有指定type类型,将无法得到正确的样式,因为Bootstrap框架都是通过input[type=“?”](其中?号代表type类型,比如说text类型,对应的是input[type=“text”])的形式来定义样式的。
 
表单控件(下拉选择select)
Bootstrap框架中的下拉选择框使用和原始的一致,多行选择设置multiple属性的值为multiple
 
表单控件(文本域textarea)
文本域和原始使用方法一样,设置rows可定义其高度,设置cols可以设置其宽度。但如果textarea元素中添加了类名“form-control”类名,则无需设置cols属性。因为Bootstrap框架中的“form-control”样式的表单控件宽度为100%auto。所以为 input 增添 .form-control 后框的宽度到浏览器边缘了。可以通过增添 .col-sm-数字 来缩短宽度? 
 
表单控件(复选框checkbox和单选择按钮radio)
Bootstrap框架中checkbox和radio有点特殊,Bootstrap针对他们做了一些特殊化处理,主要是checkbox和radio与label标签配合使用会出现一些小问题(最头痛的是对齐问题)。比如下面这样:
 
因此要采取下面的方法:
1、不管是 checkbox 还是 radio 都使用label包起来了
2、checkbox 连同 label 标签放置在一个名为“.checkbox”的div容器内 
(2) radio连同label标签放置在一个名为“.radio”的div容器内
在Bootstrap框架中,主要借助“.checkbox”和“.radio”样式,来处理复选框、单选按钮与标签的对齐方式。
<div class="checkbox">
<label>
<input type="checkbox" value="">
记住密码
</label>
</div>
 
<div class="radio">
<label>
<input type="radio" name="optionsRadios" id="optionsRadios2" value="hate">
不喜欢
</label>
</div>
这样就变成了:
从上面可以看出,对于 checkbox 和 radio 可以这样做:
1. 用一个 div.checkbox 包裹 label 和 input[type="checkbox"] 或者用一个 .radio 包裹 label 和 input[type="radio"]。
2. 让 label 包裹住 input[type="checkbox"]  或者 input[type="radio"]。
 
表单控件(复选框和单选框按钮水平排列)
有时候,为了布局的需要,将复选框和单选按钮需要水平排列。Bootstrap框架也做了这方面的考虑:
1、如果checkbox需要水平排列,只需要在label标签上添加类名“checkbox-inline”
2、如果radio需要水平排列,只需要在label标签上添加类名“radio-inline”
<div class="form-group">
    <label class="checkbox-inline">
      <input type="checkbox"  value="option1">游戏
    </label>
    <label class="checkbox-inline">
      <input type="checkbox"  value="option2">摄影
    </label>
    <label class="checkbox-inline">
    <input type="checkbox"  value="option3">旅游
    </label>
  </div>
上面代码的显示是:
注意:同样需要用div把label和input包裹起来,但是这时候div的class不像上面那样是"checkbox"或者“radio”,而是“form-group”了。
 
<div class="form-group">
    <label>
      <input type="checkbox"  value="option1">游戏
    </label>
    <label>
      <input type="checkbox"  value="option2">摄影
    </label>
    <label>
    <input type="checkbox"  value="option3">旅游
    </label>
  </div>
上面代码的显示是:
注意区分不同!后者的 input 没有 .checkbox-inline
 
表单控件(按钮)

按钮也是表单重要控件之一,制作按钮通常使用下面代码来实现:

  ☑  input[type=submit”]

  ☑  input[type=“button”]

  ☑  input[type=reset”]

  ☑  <button>

在Bootstrap框架中的按钮都是采用<button>来实现,注意button中也要有 type = "button"

注意:从上面可以看出 ".btn"都是必须的
 
表单控件大小:
前面看到的表单控件都正常的大小。可以通过设置控件的height,line-height,paddingfont-size等属性来实现控件的高度设置。不过Bootstrap框架还提供了两个不同的类名,用来控制表单控件的高度。这两个类名是:
1、input-sm:让控件比正常大小更小
2、input-lg:让控件比正常大小更大

这两个类适用于表单中的inputtextareaselect控件。

<input class="form-control input-lg" type="text" placeholder="添加.input-lg,控件变大">
 
然而,不管是“input-sm”还是“input-lg”仅对控件高度做了处理。但往往很多时候,我们需要控件宽度也要做一定的变化处理。这个时候就要借住Bootstrap框架的网格系统
 <div class="col-xs-4">
    <input class="form-control input-lg" type="text" placeholder=".col-xs-4">
  </div>
 
表单控件状态(焦点状态)

表单状态的作用:

每一种状态都能给用户传递不同的信息,比如表单有焦点的状态可以告诉用户可以输入或选择东西,禁用状态可以告诉用户不可以输入或选择东西,还有就是表单控件验证状态,可以告诉用户的操作是否正确等。那么在Bootstrap框架中的表单控件也具备这些状态。

要让控件在焦点状态下有上面样式效果,需要给控件添加类名“form-control”
在Bootstrap框架中,fileradiocheckbox控件在焦点状态下的效果也与普通的input控件不太一样,主要是因为Bootstrap对他们做了一些特殊处理:
 
表单控件状态(禁用状态)
Bootstrap框架的表单控件的禁用状态和普通的表单禁用状态实现方法是一样的,在相应的表单控件上添加属性“disabled”。
注意:要让radio和checkbox默认被选中,是添加属性"checked"
 
但是对于整个禁用的域中(即在fieldset中设置了disabled),如果legend中有输入框的话,这个输入框是无法被禁用
<form role="form">
<fieldset disabled>
<legend><input type="text" class="form-control" placeholder="显然我颜色变灰了,但是我没被禁用,不信?单击试一下" /></legend>
    …
</fieldset>
</form>
 
表单控件状态(验证状态)
在制作表单时,不免要做表单验证。同样也需要提供验证状态样式,在Bootstrap框架中同样提供这几种效果。
1、.has-warning:警告状态(黄色)
2、.has-error:错误状态(红色)
3、.has-success:成功状态(绿色)
注意:这个是在form-group容器上对应添加状态类名的。<label>上加入class="control-label",同时也会把里面的label字体颜色改变。
<div class="form-group has-success">
  <label class="control-label" for="inputSuccess1">成功状态</label>
  <input type="text" class="form-control" id="inputSuccess1" placeholder="成功状态" >
</div>
注意:<label> 没有包裹住 <input>
 
很多时候,在表单验证的时候,不同的状态会提供不同的 icon,比如成功是一个对号(√),错误是一个叉号(×)等。在Bootstrap框中也提供了这样的效果。如果你想让表单在对应的状态下显示 icon 出来,只需要在对应的状态下添加类名“has-feedback”。请注意,此类名要与“has-error”、“has-warning”和“has-success”在一起:
<div class="form-group has-successhas-feedback">
  <label class="control-label" for="inputSuccess1">成功状态</label>
  <input type="text" class="form-control" id="inputSuccess1" placeholder="成功状态" >
  <span class="glyphicon glyphicon-ok form-control-feedback"></span>
注意:一定要在表单中添加最后的那个<span>,这个 span 有 3 个类。
表单提示信息
在Bootstrap框架中使用了一个"help-block"样式,将提示信息以块状显示,并且显示在控件底部。
<div class="form-group has-success has-feedback">
  <label class="control-label" for="inputSuccess1">成功状态</label>
  <input type="text" class="form-control" id="inputSuccess1" placeholder="成功状态" >
  <span class="help-block">你输入的信息是正确的</span>
  <span class="glyphicon glyphicon-ok form-control-feedback"></span>
</div>
 
如果想让提示信息显示在控件的后面,也就是同一水平显示,可以借助于Bootstrap的网格系统:
<form role="form">
<div class="form-group">
<label class="control-label" for="inputSuccess1">成功状态</label>
<div class="row"><div class="col-xs-6">
<input type="text" class="form-control" id="inputSuccess1" placeholder="成功状态" >
</div>
<span class="col-xs-6 help-block">你输入的信息是正确的</span>
</div>
</div>
</form>
 
默认按钮
Bootstrap框架首先通过基础类名“.btn”定义了一个基础的按钮风格,然后通过“.btn-default”定义了一个默认的按钮风格。默认按钮的风格就是在基础按钮的风格的基础上修改了按钮的背景颜色边框颜色文本颜色
注意:要同时有.btn 和.btn-default 类
左边是 .btn,右边是 .btn .btn-default
 
按钮多标签支持
一般制作按钮除了使用<button>标签元素之外,还可以使用<input type="submit">和<a>标签等。同样,在Bootstrap框架中制作按钮时,除了刚才所说的这些标签元素之外,还可以使用在其他的标签元素上,唯一需要注意的是,要在制作按钮的标签元素上添加类名“btn”。如果不添加是不会有任何按钮效果。
注意:.btn-default也需要加上,不然没边框?
 
<button class="btn btn-default" type="button">button标签按钮</button>
<input type="submit" class="btnbtn-default" value="input标签按钮"/>
<a href="##" class="btn btn-default">a标签按钮</a>
<span class="btn btn-default">span标签按钮</span>
<div class="btn btn-default">div标签按钮</div>
 
注意:虽然在Bootstrap框架中使用任何标签元素都可以实现按钮风格,但个人并不建议这样使用,为了避免浏览器兼容性问题,个人强烈建议使用buttona标签来制作按钮。
 
定制风格
在Bootstrap框架中不同的按钮风格都是通过不同的类名来实现,在使用过程中,开发者只需要选择不同的类名即可:
 
 
使用起来就很简单,就像前面介绍的默认按钮一样的使用方法,只需要在基础按钮“.btn”基础上追加对应的类名,就可以得到需要的按钮风格。
 
按钮大小
在Bootstrap框架中,对于按钮的大小,也是可以定制的。类似于input一样,通过在基础按钮“.btn”的基础上追加类名来控制按钮的大小: .btn-lg  .btn-sm .btn-xs
 
块状按钮
Bootstrap框架中提供了一个类名“btn-block”。按钮使用这个类名就可以让按钮充满整个容器,并且这个按钮不会有任何的paddingmargin值。
禁用按钮
和input等表单控件一样,在Bootstrap框架的按钮中也具有禁用状态的设置。禁用状态与其他状态按钮相比,就是背景颜色的透明度做了一定的处理,opcity的值从100%调整为65%。

在Bootstrap框架中,要禁用按钮有两种实现方式:

方法1:在标签中添加disabled属性

方法2:在元素标签中添加类名“disabled”

两者的主要区别是:

“.disabled”样式不会禁止按钮的默认行为,比如说提交和重置行为等。如果想要让这样的禁用按钮也能禁止按钮的默认行为,则需要通过JavaScript这样的语言来处理。对于<a>标签也存在类似问题,如果通过类名“.disable”来禁用按钮,其链接行为是无法禁止。而在元素标签中添加“disabled”属性的方法是可以禁止元素的默认行为的。

 
图像

图像在网页制作中也是常要用到的元素,在Bootstrap框架中对于图像的样式风格提供以下几种风格:

1、img-responsive:响应式图片,主要针对于响应式设计
2、img-rounded:圆角图片
3、img-circle:圆形图片
4、img-thumbnail:缩略图片

使用方法:

使用方法非常简单,只需要在<img>标签上添加对应的类名,如下代码:

<img  alt="140x140" src="http://placehold.it/140x140">
<img  class="img-rounded" alt="140x140" src="http://placehold.it/140x140">
<img  class="img-circle" alt="140x140" src="http://placehold.it/140x140">
<img  class="img-thumbnail" alt="140x140" src="http://placehold.it/140x140">
<img  class="img-responsive" alt="140x140" src="http://placehold.it/140x140">
 
图标
<span class="glyphicon glyphicon-okform-control-feedback"></span>
 
使用方法:
 
1.不要和其他组件混合使用

 

图标类不能和其它组件直接联合使用。它们不能在同一个元素上与其他类共同存在。应该创建一个嵌套的 <span>标签,并将图标类应用到这个 <span> 标签上。

 

2.只对内容为空的元素起作用

图标类只能应用在不包含任何文本内容或子元素的元素上。

。。。。
注意:把 Bootstrap 文件夹中的 fonts 文件夹放到CSS同级,不然图标不会显示。
 
文档查看:http://v3.bootcss.com/components/ 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!