表单

1,基础表单

   如果在select、input、textarea元素上应用了.form-control样式,显示的宽度会变成100%,并且placeholder的颜色都设置成了#999999。下面是主要的源码、用法以及效果:

// 源码1689行
.form-control {
  display: block;
  width: 100%;                          /* 设置宽度是100% */
  /* 省略部分设置 */
  border: 1px solid #ccc;               /* 边框设置 */
  border-radius: 4px;                   /* 圆角设置*/
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
  border-color: #66afe9;                        /* 作用域得到焦点时的边框颜色*/
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
}
.form-control:-moz-placeholder {  color: #999;/* placeholder的文本颜色:moz浏览器*/}
.form-control::-moz-placeholder {  color: #999;/* placeholder的文本颜色:moz浏览器*/  
  opacity
: 1;} .form-control:-ms-input-placeholder { color: #999;/* placeholder的文本颜色:IE浏览器*/
} .form-control::-webkit-input-placeholder { color: #999;/* placeholder的文本颜色:webkit浏览器*/
}
    <form>
       <fieldset>
         <legend>用户登录</legend>
         <div class="form-group">
             <label>登录账户</label>
             <input type="email" class="form-control" placeholder="请输入你的用户名或Email">
         </div>
         <div class="form-group">
             <label>密码</label>
             <input type="text" class="form-control" placeholder="请输入你的密码">
         </div>
         <div class="checkbox">
             <label><input type="checkbox">记住密码</label>
         </div>
         <button type="submit" class="btn btn-default">登录</button>
       </fieldset>
    </form>

在上例中,提示语lable和input元素放在一个样式为.form-group的div里了。该样式提供了一个margin-bottom:15px的底部外边距,所以可以很清晰地看到没一组控件。

2.内联表单

   有的时候,我们可能需要一个所有控件都在一行中的表单,要实现这种内联样式效果,只需要在普通的form元素上应用一个.form-inline样式,即可将表单内的元素设置为内联样式。

  水平线上的唯一因素就是要控制元素的显示方式为display:inline-block,该.form-inline样式只能在大于768像素的浏览器上才能应用。源码如下:

// 源码1927行
@media (min-width: 768px) {             /* 大于768像素的浏览器才生效*/
  .form-inline .form-group {
    display: inline-block;              /* 内联样式显示*/
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .form-control {
    display: inline-block;/* 内联样式显示,但由于form-control样式设置了100%的宽度,所以没什么用*/
    width: auto;
    vertical-align: middle;
  }
  .form-inline .radio,
  .form-inline .checkbox {
    display: inline-block;
    padding-left: 0;
    margin-top: 0;  /* 确保上下居中*/
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio input[type="radio"],
  .form-inline .checkbox input[type="checkbox"] {
    float: none;  /* 不使用浮动定位*/
    margin-left: 0;
  }
  .form-inline .has-feedback .form-control-feedback {  top: 0;  }
}

  要注意,由于默认样式为.form-control,在直接使用内联表单的时候是无效的,需要对这些控件元素单独设置宽度width,或者外面再加上一层带有.form-group样式的div元素。

    <form class="form-inline">
        <div class="form-group">
            <input type="text" class="form-control" placeholder="请输入你的用户名">
        </div>
        <div class="form-group">
            <input type="text" class="form-control" placeholder="请输入你的密码">
        </div>
        <div class="checkbox">
            <label><input type="checkbox">记住密码</label>
        </div>
        <button type="submit" class="btn btn-default">登录</button>
    </form>

3.横向表单

   横向表单与内联表单的使用方式不太一样,其不能在form元素上简单应用一个.form-horizontal样式,这是因为.form-horizontal样式本身没有做什么特殊的设置,只是简单设置了一下相关的padding和margin。源码如下:

// 源码1959行
.form-horizontal .control-label,
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {     /* 简单设置了一下padding和margin */
  padding-top: 7px;
  margin-top: 0;
  margin-bottom: 0;
}
.form-horizontal .radio,.form-horizontal .checkbox {  min-height: 27px;}/* 设置最小高度 */
.form-horizontal .form-group {          /* 简单设置了一下margin */
  margin-right: -15px;  margin-left: -15px;
}
.form-horizontal .form-control-static {  padding-top: 7px; }
@media (min-width: 768px) {
  .form-horizontal .control-label { text-align: right;}/* 大屏幕下,label可以居右显示 */  
}

  所以,要实现横向表单,不仅要应用上述样式,还要使用Bootstrap预制的栅格类,以便将label和控件水平并排布局。

 

<form class="form-horizontal" role="form">
    <div class="form-group">
        <label for="account" class="col-sm-2 control-label">用户名</label>
        <div class="col-sm-10">
          <input type="email" class="form-control" id="account" placeholder="请输入你的用户名">
        </div>
    </div>
    <div class="form-group">
        <label for=" password " class="col-sm-2 control-label">密码</label>
        <div class="col-sm-10">
          <input type="password" class="form-control" id="password" placeholder="请输入你的密码">
        </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">
       <button type="submit" class="btn btn-default">登录</button>
    </div>
    </div>
</form>

 

posted on 2016-04-03 17:04  凡一二三  阅读(209)  评论(0)    收藏  举报