多行Flex项垂直居中

8

我试图垂直对齐包装器的子DIV,但不幸的是没有成功。要求是屏幕宽度和高度为满屏,有两个子

DIV 垂直和水平居中。 (通过jQuery处理div的高度以使窗口高度)

注意:我不想让子DIV width:100%

这是我尝试过的:

.wrapper {
  width: 100%;
  height:100%;
  min-height:600px; /*just for example*/
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  background:#e1e1e1;
}
.row1 {
  background: #cdcdcd;
}
.row2 {
  background: #404040; color:#fff;
}
<div class="wrapper">
  <div class="row1">This is row one</div>
  <div class="row2">This is row two</div>
</div>

1个回答

20

Flex容器的初始设置是flex-direction: row。这意味着容器中的子元素(“flex项目”)将在一行中排列。

要覆盖此默认设置,您可以向容器添加flex-wrap:wrap并为项目提供width:100%,这会强制每行一个项目。但是,您正在说这种方法在这种情况下不可行。

因此,另一种选择是将容器切换为flex-direction: column

.wrapper {
  width: 100%;
  height:100%;
  min-height:600px; /*just for example*/
  display: flex;
  flex-direction: column; /* NEW */
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  background:#e1e1e1;
}
.row1 {
  background: #cdcdcd;
}
.row2 {
  background: #404040; color:#fff;
}
<div class="wrapper">
  <div class="row1">This is row one</div>
  <div class="row2">This is row two</div>
</div>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接