为什么flexbox会拉伸我的图像?

sjb*_*sse 129 html css flexbox

Flexbox具有将图像拉伸到其自然高度的行为.在其他(更具体的)单词中,如果我有一个带有子图像的flexbox容器,并且我调整了该图像的宽度,则高度根本不会调整大小并且图像会被拉伸.

div {
  display: flex; 
  flex-wrap: wrap;
}
img{ 
  width: 50%
}
Run Code Online (Sandbox Code Playgroud)

而这个样式表

<div>
    <img src="https://loremflickr.com/400/300" >
    <h4>Appify</h4>
    <p> some text </p>
</div>
Run Code Online (Sandbox Code Playgroud)

我添加了这个codepen来演示我的意思.是什么导致这个?

pra*_*ngh 312

它是拉伸的,因为align-self默认值是stretch.设置align-selfcenter.

align-self: center;
Run Code Online (Sandbox Code Playgroud)

请参阅doc: align-self

  • 我认为`align-self:start;`可能是一个更强大的答案,因为图像应该像任何无样式图像(没有css)一样垂直对齐容器的TOP(不是中心).无论哪种方式,两个答案都解决了拉伸问题.所以这取决于OP当然想要的东西 - 只是没有从OP的帖子中得到'垂直居中'的印象. (6认同)
  • 您还可以将“align-items: center”(或任何适合您需要的对齐方式)放在父级上。 (3认同)

Dor*_*ian 15

关键是align-self: center:

.container {
  display: flex;
  flex-direction: column;
}

img {
  max-width: 100%;
}

img.align-self {
  align-self: center;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
<p>Without align-self:</p>
<img src="http://i.imgur.com/NFBYJ3hs.jpg" />
<p>With align-self:</p>
<img class="align-self" src="http://i.imgur.com/NFBYJ3hs.jpg" />
</div>
Run Code Online (Sandbox Code Playgroud)