Css 弹性溢出问题

Css flex overflow issue

我有:

.container {
    display:flex;
    align-items:center
}
.content {
    flex-grow:1
}

以便仅将 .content div 与 css 垂直对齐。内容动态变化,这就是我不能使用 position:absolute; margin-top:50%... 样式的原因。因为我永远不知道每次内容更新时 div 的确切高度。

但是在 .container 宽度发生变化但高度保持不变的情况下,.content 会溢出 .container 顶部,因为它将文本包裹在其中。

我想做的是永远不要让 .content 超出顶部位置小于 0。即使是最理想的情况也会保留 .containerpadding-top 值,并且margin-top .content 的值。溢出的底部就可以了,事实上这是我的偏好。

有什么解决方法吗?

您可以使 .container height 灵活:使用 min-height 而不是 height

.container {
  display: flex;
  align-items:center;
  min-height: 75px;
  border: 3px solid blue;
}
.content {
  height: 150px;
  flex-grow: 1;
  border: 3px solid red;
  resize: vertical;
  overflow: auto;
}
<div class="container">
  <div class="content"></div>
</div>

另一种可能性是使用 overflow: auto。但是,不是使用 align-items:center 居中,而是使用 margin: auto 0.

.container {
  display: flex;
  height: 75px;
  border: 3px solid blue;
  overflow: auto;
  resize: vertical;
}
.content {
  height: 150px;
  flex-grow: 1;
  margin: auto 0;
  border: 3px solid red;
}
<div class="container">
  <div class="content"></div>
</div>