align-items:居中会使img消失

A. *_*Lau 5 html css css3 css-grid

因此,使用网格时,当我没有align-items: center;img时,align-items: center;它可以正常显示,但是一旦添加,它就会突然消失。是什么导致此问题?

.grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  height: 100px;
}

img {
  display: block;
  max-height: 100%;
  margin: 0 auto;
}

.align {
  align-items: center;
}
Run Code Online (Sandbox Code Playgroud)
<div class="grid">
  <div>
    <span>text</span>
  </div>
  <div>
    <img src="http://via.placeholder.com/650x1050" />
  </div>
</div>

<div class="grid align">
  <div>
    <span>text</span>
  </div>
  <div>
    <img src="http://via.placeholder.com/650x1050" />
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这似乎是Chrome问题。它也不适用于Firefox上的img。

Mic*_*l_B 7

这是因为百分比高度在浏览器中呈现的方式。

align-items: center不存在时,align-items: stretch(默认值)有效。这会自动赋予 flex 项目 (the div) 全高。

但是当align-items: center存在时,它垂直居中 div。div 的子元素imgwithmax-height: 100%实际计算为height: auto,因为父元素(div flex 项)没有高度参考。

该问题通过在 flex 项目上设置高度来解决。

.grid > div {
  height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

.grid > div {
  height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
.grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  height: 100px;
  border: 1px solid red;
}

.grid>div {
  height: 100%;
}

img {
  display: block;
  max-height: 100%;
  margin: 0 auto;
}

.align {
  align-items: center;
}
Run Code Online (Sandbox Code Playgroud)

更多细节在这里: