form-inline导致各个表单组件的重叠

时间:2014-08-03 04:48:16

标签: html css twitter-bootstrap-3

随着我了解更多关于bootstrap的知识,我取得了很好的进展,但我再一次面临着一个基本的挑战。这是关于内联形式的。

Screenshot of problem with inline-form

请参阅随附的屏幕截图。如你所见,我有两个问题。第一个也很容易识别出来的是“体验”。 section - 这是嵌套在表单组中的内联表单,问题是重叠字段。理想情况下,它们应该彼此相邻,它们之间有10px的缓冲区。本节的代码如下

 <div class="form-group row-top-buffer">
    <label for="experience" class="col-md-3 control-label">Experience</label>
    <div class="col-md-9 form-inline" role="form">
        <div class="form-group col-md-3">
            <label class="sr-only" for="jobMinExperience">Min Experience</label>
            <input type="text" class="form-control" id="jobMinExperience" placeholder="0" />
        </div>
        <div class="form-group col-md-3">
            <label class="sr-only" for="jobMaxExperience">Max Experience</label>
            <input type="text" class="form-control" id="jobMaxExperience" placeholder="0" />
        </div>
        <div class="form-group col-md-3">
            <label class="sr-only" for="jobExperienceDropDown">Experience</label>
            <div class="dropdown">
                <button class="btn btn-default dropdown-toggle" type="button" id="jobExperienceDropDown" data-toggle="dropdown">
                    Dropdown
                    <span class="caret"></span>
                </button>
                <ul class="dropdown-menu" role="menu" aria-labelledby="jobExperienceDropDown">
                    <li role="presentation">
                        <a role="menuitem" tabindex="-1" href="#">years</a>
                    </li>
                    <li role="presentation">
                        <a role="menuitem" tabindex="-1" href="#">months</a>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</div>

第二个不太明显的问题是位置&#39;行。我有两排组件。第一个是简单的全角文本输入。然而,第二行是包括多个组件的内联形式。在这里,我希望最后一个文本框,对于邮政编码,要延伸到第一行结束 - 但它会突然停止。此部分的代码在下面提供

    <div class="form-group row-top-buffer">
    <label for="jobLocation" class="col-md-3 control-label">Location</label>
    <div class="col-md-9">
        <input type="text" class="form-control" id="jobStreet" name="jobStreet" placeholder="Street" />
        <div class="form-inline" role="form" style="padding-top: 9px;">
            <div class="form-group col-md-5">
                <label class="sr-only" for="jobCity">City</label>
                <input type="text" class="form-control" id="jobCity" name="jobCity" placeholder="City" />
            </div>
            <div class="form-group col-md-2 margin-0">
                <label class="sr-only" for="jobState">State</label>
                <?
                    include_once 'stateDropDown.php';
                ?>
            </div>
            <div class="form-group col-md-3 margin-0">
                <label class="sr-only" for="jobZip">City</label>
                <input type="text" class="form-control" id="jobZip" name="jobZip" placeholder="00000" />
            </div>
        </div>
    </div>
</div>

1 个答案:

答案 0 :(得分:9)

表单布局与表单本身上的类有很大关系,例如form-horizontal,这是屏幕截图所反映的表单类型。但是,你的html混合了内联表单类,并在表单组中组合了col类,就像在行中添加列类一样 - 没有完成。无论如何,这不是你确切的形式,但它足以评论,一旦你学到它就能得到你想要的东西。我为此选择了你的下拉菜单,但是除非你使用一些插件来选择下拉(有一个),你可以在表单中使用选择菜单。

enter image description here

DEMO:http://jsbin.com/fecib/2/edit

<form class="form-horizontal my-form" role="form">

 <div class="form-group">
  <label class="col-sm-3 control-label">Location</label>
  <div class="col-sm-9">
   <input type="text" class="form-control" placeholder="location">
  </div><!-- /col-sm-9 -->
 </div><!-- /form-group -->


 <div class="form-group">
  <div class="col-sm-offset-3 col-sm-9">

   <div class="form-group"> <!-- nested form-group acting like row -->
    <div class="col-sm-6">
     <input type="text" class="form-control" placeholder="City">
    </div><!-- /col-sm-6 -->
    <div class="col-sm-4">
     <input type="text" class="form-control" placeholder="State">
    </div><!-- /col-sm-4 -->
    <div class="col-sm-2">
     <input type="text" class="form-control" placeholder="Zip">
    </div><!-- /col-sm-2 -->
   </div> <!-- /nested form-group acting like row -->

  </div><!-- /col-sm-offset-3 col-sm-9 -->
 </div><!-- /form-group -->



 <div class="form-group">
  <label for="location" class="col-sm-3 control-label">Priority</label>
  <div class="col-sm-9">
   <div class="dropdown">
    <button class="btn btn-default dropdown-toggle" type="button" id="jobExperienceDropDown" data-toggle="dropdown"> Dropdown <span class="caret"></span> </button>
    <ul class="dropdown-menu" role="menu" aria-labelledby="jobExperienceDropDown">
     <li role="presentation"> <a role="menuitem" tabindex="-1" href="#">years</a> </li>
     <li role="presentation"> <a role="menuitem" tabindex="-1" href="#">months</a> </li>
    </ul>
   </div><!-- /dropdown -->
  </div><!-- /col-sm-9-->
 </div><!-- /form-group -->


 <div class="form-group">

  <label class="col-sm-3 control-label">Experience</label>

  <div class="col-sm-9">
   <div class="form-group"><!-- nested form-group acting like row -->
    <div class="col-sm-4">
     <input type="text" class="form-control" placeholder="0">
    </div><!-- /.col-sm-4 -->
    <div class="col-sm-4">
     <input type="text" class="form-control" placeholder="0">
    </div><!-- /.col-sm-4 -->
    <div class="col-sm-4">
     <div class="dropdown">
      <button class="btn btn-default dropdown-toggle" type="button" id="jobExperienceDropDown" data-toggle="dropdown"> Dropdown <span class="caret"></span> </button>
      <ul class="dropdown-menu" role="menu" aria-labelledby="jobExperienceDropDown">
       <li role="presentation"> <a role="menuitem" tabindex="-1" href="#">years</a> </li>
       <li role="presentation"> <a role="menuitem" tabindex="-1" href="#">months</a> </li>
      </ul>
   </div><!-- /dropdown -->
    </div><!-- /.col-sm-4 -->
   </div><!-- /nested form-group acting like row -->
  </div><!-- /.col-sm-9 -->
 </div><!-- /.form-group -->


 <div class="form-group">
  <div class="col-sm-offset-3 col-sm-9">
   <button type="submit" class="btn btn-default">Sign in</button>
  </div>
 </div>

</form>

CSS:

/* ----------- adjusted nested columns grid ----------- */
.my-form .form-group [class*="col-"] .form-group [class*="col-"] {
    padding-left: .5%;
    padding-right: .5%;
}

.my-form .form-group [class*="col-"] .form-group {
    margin-left: -.5%;
    margin-right: -.5%;
}

.my-form .form-group [class*="col-"] .form-group [class*="col-"]:not(:last-child) {
    margin-bottom: 10px
}

@media (min-width:768px) { 
    .my-form .form-group [class*="col-"] .form-group [class*="col-"]:not(:last-child) {
        margin-bottom: 0
    }
}

.my-form .form-group [class*="col-"] .form-group {
    margin-bottom: 0
}