Flex不会将所有列连续居中

时间:2016-11-30 22:01:16

标签: html css twitter-bootstrap css3 flexbox

我正在测试新的Bootstrap 4-alpha.5,现在我正在使用flexbox。

我想垂直居中行中的所有列,但它只适用于第二列 - 为什么?

我尝试了中心 - 行和每一列。

http://codepen.io/vertisan/pen/QGOYwp

<div class="login-page">
<div id="login-container">
  <div class="container-fluid">
    <div class="row flex-items-md-middle">
      <div class="col-md-8 login-container-intro flex-md-middle" style="background: url( http://placehold.it/1280x720/ff0000 );">
        <div class="login-content__intro">
          <img src="http://placehold.it/500x150" alt="" class="img-fluid mx-auto" />
        </div>
      </div>
      <div class="col-md-4 login-container-sidebar flex-md-middle">
        <div class="login-content__sidebar">
          <div class="login-form">
            <form>
              <div class="form-group">
                <label class="control-label" for="inputNormal">Normal input</label>
                <input type="text" class="form-control" id="inputNormal" placeholder="Placeholder text" />
              </div>

              <div class="form-group has-warning">
                <label class="control-label" for="inputWarning">Warning input</label>
                <input type="text" class="form-control" id="inputWarning" placeholder="Placeholder text" />
              </div>
            </form>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
</div>

1 个答案:

答案 0 :(得分:1)

请记住,flex布局仅存在于父元素和子元素之间。父母上方的祖先和子女下方的后代不参与弹性布局。

从您的代码中可以看出,您希望某些元素继承Flex属性,但由于它们超出了 flex格式化上下文的范围,因此只会忽略这些属性。 / p>

在第一列中,容器.login-container-intro存在于块格式化上下文display: block)中。设为display: flex并添加align-items: center

revised codepen

在此处详细了解flex格式上下文的范围:https://stackoverflow.com/a/37844240/3597276