3.5.4 表单控件

在默认的Bootstrap源码里,对input、select、testarea都有良好的支持,尤其是对现有HTML5语法下的input都进行了支持(如type为text、password、datetime、datetime-local、date、month、time、week、number、email、url、search、tel和color的元素)。

1.input元素

在使用input元素的时候,必须声明type类型,否则可能会引起其他问题,因为Bootstrap在定义这些样式的时候都指定了type类型,比如,input[type="text"]。

  1. <input type="text" placeholder=“文本输入框”>

2.select元素

下拉列表select元素的使用方式和原始的一致,多行选择设置mulitiple属性为multiple即可。Bootstrap会为这些默认的元素提供统一风格的显示。示例如下:

  1. <select>
  2. <option>1</option>
  3. </select>
  4. <select multiple="multiple">
  5. <option>1</option>
  6. <option>2</option>
  7. </select>

3.textarea元素

同样,在textarea元素里定义了rows数字即可定义大文本框的高度,定义cols可以定义大文本框的宽度。但是如果在该框架上应用了.form-control样式,则cols属性不起作用,因为.form-control样式的表单控件都设置了100%的宽度(或auto)。所以大家在使用时,一旦设置了该样式,就不需要再设置cols属性了。如:

  1. <textarea class="form-control" rows="3"></textarea>

4.checkbox和radio

checkbox和radio是input元素里两个非常特殊的type,通常在使用的过程中和label文字搭配,但通常会出现左右边距对不齐的问题。为此,Bootstrap进行了标准设置,开发人员在使用的过程中遵循如下方式即可:

  1. <div class="checkbox">
  2. <label><input type="checkbox" value="">是否想赚大钱?</label>
  3. </div>
  4. <div class="radio">
  5. <label><input type="radio" name="optionsRadios" value="female" checked>
  6. 确保,您喜欢女人?</label>
  7. </div>
  8. <div class="radio">
  9. <label><input type="radio" name="optionsRadios" value="male">请确保,您喜欢
  10. 男人?</label>
  11. </div>

即使用的时候,每个input外部都要用label包住,并且在最外层用容器元素包住,并应用相应的.checkbox和.radio样式。主要源码如下:

  1. // 源码1741行
  2. .radio,
  3. .checkbox { /* 让单选框和复选框都能左右和上下居中 */
  4. display: block;
  5. min-height: 20px;
  6. padding-left: 20px;
  7. margin-top: 10px;
  8. margin-bottom: 10px;
  9. }
  10. .radio label,
  11. .checkbox label { /* 内部有label的话,内联显示 */
  12. display: inline;
  13. font-weight: normal;
  14. cursor: pointer;
  15. }

有些checkbox或者radio元素中文本很少,可能需要横向显示,为此Bootstrap也提供了相应的内联样式.checkbox-inline和.radio-inline,效果如图3-23所示。

3.5.4 表单控件 - 图1 图3-23 checkbox和radio元素运行效果

使用方式如下:

  1. <label class="checkbox-inline">
  2. <input type="checkbox" value="体育" id="inlineCheckbox1">体育
  3. </label>
  4. <label class="checkbox-inline">
  5. <input type="checkbox" value="音乐" id="inlineCheckbox2">音乐
  6. </label>
  7. <label class="radio-inline">
  8. <input type="radio" value="未知" id="Radio3">未知
  9. </label>

实现源码如下:

  1. // 源码1766行
  2. .radio-inline,
  3. .checkbox-inline { /* 在其他元素上设置*-inline样式的话,也可以让多个控件水平在一行中显示 */
  4. display: inline-block;
  5. padding-left: 20px;
  6. margin-bottom: 0;
  7. font-weight: normal;
  8. vertical-align: middle; /* 垂直居中 */
  9. cursor: pointer;
  10. }
  11. .radio-inline + .radio-inline,
  12. .checkbox-inline + .checkbox-inline {
  13. margin-top: 0;
  14. margin-left: 10px; /* 每个选项间距10px */
  15. }