Vertical Align Center Bootstrap 4 Form-Group Row

时间:2018-01-31 17:22:58

标签: html css twitter-bootstrap bootstrap-4

我的表格看起来像这样:

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal card card-body my-bg">

        <div class="form-group row justify-content-center align-content-center">
            <div class="col-md">
                @Html.Label("My Label", new { @class = "control-label col-md-12" })
                <div class="col-md-12">
                    @Html.TextBoxFor(model => model.TestName, null, new { @class = "form-control", @disabled = "disabled" })
                </div>
            </div>
            <div class="col-md">
                @Html.Label("Label Two", new { @class = "control-label col-md-12" })
                <div class="col-md-12">
                    @Html.TextBoxFor(model => model.TestProperty, null, new { @class = "form-control", @disabled = "disabled" })
                </div>
            </div>
        </div>
    </div>
}

正如您所看到的,我已尝试过justify-content-center align-content-center,但他们并不是垂直居中的形式。

如何将表格垂直居中?

2 个答案:

答案 0 :(得分:3)

垂直中心是相对于容器的高度,在这种情况下,容器(.card)没有定义的高度。

card一个高度,使用justify-content-center垂直居中卡内容......

https://www.codeply.com/go/FdHqOtS3Av

.card {
    min-height: 300px;
}

答案 1 :(得分:1)

我不确定我是否理解了左对齐表单的问题。根据您提供的代码,每个表单元素将占据其各自列的100%......

话虽如此,代码中存在结构性错误,可能导致输出不太理想。您正确地将row正确应用于form-group,但您并未重复row您的嵌套网格。您还没有使用align-items-center,它会将子列垂直定位到最大高度。

&#13;
&#13;
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

<div class="card card-body">
  <div class="row align-items-center">
    
    <div class="col">
      <div class="form-group row">
        <label class="col-form-label col-12">My Label</label>
        <div class="col-12 my-5 ">
          <textarea name="TestName" class="form-control"></textarea>
        </div>
      </div>
    </div>

    <div class="col">
      <div class="form-group row">
        <label class="col-form-label col-12">Label Two</label>
        <div class="col-12">
          <textarea name="TestProperty" class="form-control"></textarea>
        </div>
      </div>
    </div>
    
  </div>
</div>
&#13;
&#13;
&#13;

在上面的示例中,我重新构建了您的表单以正确应用row align-items-center,然后在每个嵌套form-group row中移动了col组合。

我还将断点设置为最小的选项,以便在SO中查看它们,并将my-5应用于第一个<textarea>容器,以说明align-items-center如何导致兄弟栏垂直居中。