【问题标题】:Change Bootstrap layout from inline form to grid on mobile device在移动设备上将 Bootstrap 布局从内联表单更改为网格
【发布时间】:2016-08-21 22:02:39
【问题描述】:

我有一个复杂的 Web 表单,其中一行包含许多字段。 Bootstrap 内联表单在大屏幕上效果很好。但是,要求是使页面具有响应性,以便内联表单在平板电脑和手机等较小的屏幕上转换为 3 列网格布局。

大屏内联表单:

手机屏幕上的必需布局

有可能吗?这是针对 Bootstrap 3 的。

非常感谢任何提示!

代码片段:

<div class="container">

<form class="form-horizontal" data-toggle="validator" role="form" action="" method="post" id="form1">


    <fieldset style="background-color:#F7F7F7">

        <div class="row">
          <div class="form-inline" style="text-align:left">

            <div class="form-group"   style="margin-right:30px;">
                <div class="floating-label-form-group" style="top:-5px;width:180px">
                    <label class="control-label" for="Selection1">Selection1</label>
                    <select id="Selection1" name="Selection1" class="form-control relationship selectpicker" required>
                        <option value="" disabled selected>Selection1 *</option>
                        <option value="1">option 1</option>
                        <option value="2">option 2/option>
                        <option value="3">option 3</option>
                    </select>
                </div>
                <span class="help-block with-errors"></span>
            </div>

            <div class="form-group ">
                <div class="floating-label-form-group">
                    <label class="control-label" for="fName">1st Name</label>  
                    <input id="fName" name="fName" type="text" required>
                </div>
                <span class="help-block with-errors"></span>
            </div>
            <div class="form-group "  style="margin-right:30px">
                <div class="floating-label-form-group">
                    <label class="control-label" for="lName">Last Name</label>  
                    <input id="lName" name="lName" type="text" required>
                </div>
                <span class="help-block with-errors"></span>
            </div>

            <div class="form-group">
                <div class="floating-label-form-group" style="top:-5px;width:120px">
                    <label class="control-label" for="gender">Gender</label>
                    <select id="gender" name="gender" class="form-control selectpicker" required>
                        <option value="" disabled selected>gender *</option>
                        <option value="1">M</option>
                        <option value="2">F</option>
                    </select>
                </div>
                <span class="help-block with-errors"></span>
            </div>

            <div class="form-group">
                <div class="floating-label-form-group" style="top:-5px;width:160px">
                    <label class="control-label" for="selection2">Selection2</label>
                    <select id="selection2" name="selection2" class="form-control selectpicker" required>
                        <option value="" disabled selected>Selection2 *</option>
                        <option value="1">option 1</option>
                        <option value="2">option 2</option>
                    </select>
                </div>
                <span class="help-block with-errors"></span>
            </div>

          </div>
        </div><!-- /row -->

    </fieldset>
</form>

【问题讨论】:

  • 我什么都试过了。 SO一直是最后的手段。我不是要求有人为我编码,为了记录。我相信其他一些人可能面临类似的情况。如果@Paulie_D 无法提供有关如何解决问题的任何提示,请不要回来投反对票。
  • 只尝试显示顶部屏幕截图的内联表单布局,因此我故意模糊了文本。如果有人发现它令人困惑,我深表歉意。应该使用whiteout。是否必须给出代码 sn-p 才能理解问题?
  • 相同的结果...我们不知道什么元素是什么,以及它们应该如何定位在之前/之后。这就是为什么我们要求您使用代码进行演示...这样我们就可以看到您进行更改时发生的情况。
  • 添加了代码片段。谢谢你。屏幕截图将被编辑以反映代码。
  • 你能分享你的 CSS 吗?您正在使用一些自定义类。

标签: jquery css twitter-bootstrap-3 responsive-design


【解决方案1】:

试试这个。使用 col-md-push-* 和 col-md-pull-*

更新 JSFIDDLE

这里在form-group类和样式之前使用了form-inline类

.form-inline .form-control {    
    width: 100%;   
}
.nopadding {
   padding: 0px 2px 0px 0px !important;
   margin: 0px !important;
}
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<link href="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container">
 <div class="form-inline">
 <div class="form-group">
             <div class="row">
             <div class="col-md-4 col-md-push-8">
                     <div class="col-xs-6 nopadding">
                     <label class="control-label" for="lName">Gender</label>  
                    <select id="gender" name="gender" class="form-control selectpicker" required>
                        <option value="" disabled selected>gender *</option>
                        <option value="1">M</option>
                        <option value="2">F</option>
                    </select>
                    </div>
                
                <div class="col-xs-6 nopadding">
                    <label class="control-label" for="selection2">Selection2</label>
                    <select id="selection2" name="selection2" class="form-control selectpicker" required>
                        <option value="" disabled selected>Selection2 *</option>
                        <option value="1">option 1</option>
                        <option value="2">option 2</option>
                    </select>
                    </div></div>
                     <div class="col-md-4">
                <div class="col-xs-6 nopadding">
                    <div class="floating-label-form-group">
                    <label class="control-label" for="fName">1st Name</label>  
                    <input class="form-control" id="fName" name="fName" type="text" required>
                </div>
                </div>
                <div class="col-xs-6 nopadding">
                    
                    <label class="control-label" for="lName">Last Name</label>  
                    <input class="form-control" id="lName" name="lName" type="text" required>
                    </div></div>
  <div class="col-md-4 col-md-pull-8">
                <div class="col-xs-12 nopadding">
                    <label class="control-label" for="Selection1">Selection1</label>
                    <select id="Selection1" name="Selection1" class="form-control relationship selectpicker" required>
                        <option value="" disabled selected>Selection1 *</option>
                        <option value="1">option 1</option>
                        <option value="2">option 2</option>
                        <option value="3">option 3</option>
                    </select>
                </div>
            
             </div>
        </div>
  </div>
</div>

【讨论】:

  • 不是这样的。请在发布解决方案之前阅读问题。原始布局是 INLINE。
  • Chensformers,我更新了我的代码..请查看我上面的片段
  • 在属性中使用 0 时省略单位。 0px, 0pt, 0%, 0em, 0rem 等等。所有这些都给出了相同的结果,即 0。
【解决方案2】:

我修改了您的一些 HTML 标记,删除了一些内联样式并添加了一些类。

这就是您要查找的内容:

.myform {
  margin-top: 10px;
}
.myform fieldset {
  padding: 10px 20px;
  background-color: #F7F7F7;
}
.myform .form-group {
  display: block;
}
.myform input,
.myform select {
  min-width: 100%;
  border-radius: 0;
}
.myform .double-input {
  margin: 0;
}
.myform .double-input div[class^='col-'],
.myform .double-input div[class*=' col-'] {
  padding-left: 0;
}
.myform .double-input:first-child div[class^='col-'],
.myform .double-input:first-child div[class*=' col-'] {
  padding: 0;
}
@media (min-width: 992px) {
  .control-label {
    text-align: left;
    display: block;
  }
  .myform .double-input:first-child div[class^='col-'],
  .myform .double-input:first-child div[class*=' col-'] {
    padding-right: 3px;
  }
}
@media (max-width: 992px) {
  .myform input,
  .myform select {
    border-top: 0;
    border-right: 0;
    border-left: 0;
  }
  #fName {
    border-right: 1px solid #ccc;
  }
  #gender {
    border-right: 1px solid #ccc;
  }
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">

  <form class="myform" data-toggle="validator" role="form" action="" method="post" id="form1">


    <fieldset>

      <div class="row">
        <div class="col-md-2">
          <div class="form-group">
            <div class="floating-label-form-group">
              <label class="control-label" for="Selection1">Selection1</label>
              <select id="Selection1" name="Selection1" class="form-control relationship selectpicker" required>
                <option value="" disabled selected>Selection1 *</option>
                <option value="1">option 1</option>
                <option value="2">option 2/option>
                  <option value="3">option 3</option>
              </select>
            </div>
            <span class="help-block with-errors"></span>
          </div>
        </div>
        <div class="col-md-5">
          <div class="row double-input">
            <div class="col-xs-6">
              <div class="form-group">
                <div class="floating-label-form-group">
                  <label class="control-label" for="fName">1st Name</label>
                  <input id="fName" class="form-control" name="fName" type="text" required>
                </div>
                <span class="help-block with-errors"></span>
              </div>
            </div>
            <div class="col-xs-6">
              <div class="form-group ">
                <div class="floating-label-form-group">
                  <label class="control-label" for="lName">Last Name</label>
                  <input id="lName" class="form-control" name="lName" type="text" required>
                </div>
                <span class="help-block with-errors"></span>
              </div>
            </div>
          </div>
        </div>
        <div class="col-md-5">
          <div class="row double-input">
            <div class="col-xs-6">
              <div class="form-group">
                <div class="floating-label-form-group">
                  <label class="control-label" for="gender">Gender</label>
                  <select id="gender" name="gender" class="form-control selectpicker" required>
                    <option value="" disabled selected>gender *</option>
                    <option value="1">M</option>
                    <option value="2">F</option>
                  </select>
                </div>
                <span class="help-block with-errors"></span>
              </div>
            </div>
            <div class="col-xs-6">
              <div class="form-group">
                <div class="floating-label-form-group">
                  <label class="control-label" for="selection2">Selection2</label>
                  <select id="selection2" name="selection2" class="form-control selectpicker" required>
                    <option value="" disabled selected>Selection2 *</option>
                    <option value="1">option 1</option>
                    <option value="2">option 2</option>
                  </select>
                </div>
                <span class="help-block with-errors"></span>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- /row -->
    </fieldset>
  </form>

【讨论】:

    【解决方案3】:

            <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
            <div class="container-fluid">
    
            <form class="form-horizontal" data-toggle="validator" role="form" action="" method="post" id="form1">
    
    
                <fieldset style="background-color:#F7F7F7" style="width:100%;">
                    <div class="row">
                      <div class="form-inline" style="text-align:left">
             <div class="form-group col-xs-12 col-sm-4 col-sm-push-8">
                            <div class="floating-label-form-group col-xs-6 no-pad-right">
                                <label class="control-label" for="gender">Gender</label>
                                <select id="gender" name="gender" class="form-control selectpicker" required>
                                    <option value="" disabled selected>gender *</option>
                                    <option value="1">M</option>
                                    <option value="2">F</option>
                                </select>
                                <span class="help-block with-errors">Gender helper text</span>
                            </div>             
                            <div class="floating-label-form-group col-xs-6 no-pad-right">
                                <label class="control-label" for="selection2">Selection2</label>
                                <select id="selection2" name="selection2" class="form-control selectpicker" required>
                                    <option value="" disabled selected>Selection2 *</option>
                                    <option value="1">option 1</option>
                                    <option value="2">option 2</option>
                                </select>
                                <span class="help-block with-errors">Selection2 helper text</span>
                            </div>              
                        </div>
                        <div class="form-group col-xs-12 col-sm-3 col-sm-pull-3">
                            <div class="floating-label-form-group col-md-12 no-pad-right">
                                <label class="control-label" for="Selection1">Selection1</label>
                                <select id="Selection1" name="Selection1" class="form-control relationship selectpicker" required>
                                    <option value="" disabled selected>Selection1 *</option>
                                    <option value="1">option 1</option>
                                    <option value="2">option 2/option>
                                    <option value="3">option 3</option>
                                </select>
                                <span class="help-block with-errors">Selection1 helper text</span>
                            </div>               
                        </div>
    
                        <div class="form-group col-xs-12 col-sm-5 col-sm-pull-3">
                            <div class="floating-label-form-group col-xs-6 no-pad-right">
                                <label class="control-label" for="fName">1st Name</label>  
                                <input id="fName" name="fName" class="form-control" type="text" required>
                                <span class="help-block with-errors">1st Name helper text</span>
                            </div>
                            
    
                            <div class="floating-label-form-group col-xs-6 no-pad-right">
                                <label class="control-label" for="lName">Last Name</label>  
                                <input id="lName" name="lName" class="form-control" type="text" required>
                                <span class="help-block">Last Name helper text</span>
                            </div>
                            
                        </div>
                        
                      </div>
                    </div><!-- /row -->
                </fieldset>
            </form>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      • 2018-07-28
      • 2017-07-20
      • 2021-11-29
      相关资源
      最近更新 更多