【问题标题】:Vertical Alignment Issue with Boostrap formBootstrap 表单的垂直对齐问题
【发布时间】:2019-01-24 00:41:25
【问题描述】:

我在正在处理的搜索表单中垂直对齐项目时遇到问题。

我尝试将所有内容都包含在 <div class="form-row align-items-center"> 中,但它仍然没有居中。

基本上我有:

<form class="form-inline" method="get">    
    <div class="panel panel-default">        
        <div id="searchheading" class="panel-heading search-collapse">
        </div>

        <div class="panel-body collapse in" id="search">
            <div class="form-row align-items-center">
                <div class="form-group col-md-2">
                    Label and select here
                </div>

              <div class="form-group col-md-5">

                Label and select here
              </div>


                <div class="form-group col-md-3">
                    <input class="form-control" id="SearchString" name="SearchString" type="text" value="">
                </div>

                <input id="Search" type="submit" class="btn btn-default" value="Search">
                <a class="btn btn-default" href="ClearSearch">Clear</a>
            </div>
        </div>
    </div>
</form>

我在这里制作了实际代码的引导程序:https://www.bootply.com/CxtLh1XGT5

我希望标签和选择都彼此居中,但正如您在 bootply 中看到的那样,它们不是。

有更多 CSS 经验的人可以就我需要做什么提供帮助吗?谢谢!

【问题讨论】:

  • 寻求代码帮助的问题必须包括在问题本身中重现它所需的最短代码,最好是在堆栈片段中。尽管您提供了一个链接,但如果它变得无效,那么您的问题对于未来遇到同样问题的其他 SO 用户将毫无价值。见Something in my website/demo doesn't work can I just paste a link

标签: css twitter-bootstrap twitter-bootstrap-3


【解决方案1】:

实现这一目标的最简单、最简洁的方法是使用 css flex。

@media(min-width: 768px){
  .vertical-align {
    display: flex;
    align-items: center;
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">


<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

<form class="form-inline" method="get">

  <div class="visible-xs-block" id="xs-check"></div>
  <div class="panel panel-default">

    <div id="searchheading" class="panel-heading search-collapse">

      <b data-toggle="collapse" href="#search" aria-expanded="true" aria-controls="search">
                Search
                <i class="glyphicon glyphicon-chevron-up pull-right"></i>
                <i class="glyphicon glyphicon-chevron-down pull-right"></i>

            </b>
    </div>

    <div class="panel-body collapse in" id="search">
      <div class="form-row vertical-align">
        <div class="form-group col-md-2">
          <label for="SelectedStatus">Status</label>
          <select class="form-control" id="SelectedStatus" name="SelectedStatus">
            <option selected="selected" value="0">Open</option>
            <option value="1">Closed</option>
            <option value="2">All</option>
          </select>
        </div>

        <div class="form-group col-md-5">

          <label for="SelectedBuildingList">Building</label>
          <select class="chosen form-control" id="SelectedBuildingList" multiple="multiple" name="SelectedBuildingList" style="width: 85%;">
            <option selected="selected" value="1">B1</option>
            <option selected="selected" value="2">B2</option>
            <option selected="selected" value="3">B3</option>
            <option selected="selected" value="4">B4</option>
          </select>
        </div>


        <div class="form-group col-md-3">
          <input class="form-control" id="SearchString" name="SearchString" type="text" value="">
        </div>
        <div class="form-group col-md-2">
          <input id="Search" type="submit" class="btn btn-default" value="Search">
          <a class="btn btn-default" href="ClearSearch">Clear</a>
        </div>
      </div>
    </div>
  </div>
</form>

【讨论】:

  • 这确实使它们居中,但是当我添加了该类并缩小了屏幕尺寸时,表单组都保持在一行中,并且不会移动到水平对齐,因为它们没有那个类。
  • 我修改了我的示例以包含一个媒体查询以匹配 col-md 断点。
  • 您可以使用 css vertical-align 实现此目的,但它要求您在 html 中有 cmets 以删除 html 元素之间的空白。它既丑陋又丑陋,因此建议使用 flex。