Flexbox具有将图像拉伸到其自然高度的行为。在其他(更具体的)单词中,如果我有一个带有子图像的flexbox容器,并且我调整了该图像的宽度,则高度根本不会调整大小并且图像会被拉伸。
<div>
<img src="https://loremflickr.com/400/300" >
<h4>Appify</h4>
<p> some text </p>
</div>
这个样式表
div {
display: flex;
flex-wrap: wrap;
}
img{
width: 50%
}
我添加This codepen来证明我的意思。 是什么原因造成的?
答案 0 :(得分:248)
答案 1 :(得分:7)
关键是align-self: center
:
.container {
display: flex;
flex-direction: column;
}
img {
max-width: 100%;
}
img.align-self {
align-self: center;
}
<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>
答案 2 :(得分:1)
我在基金会菜单上遇到了同样的问题。 align-self: center;
对我不起作用。
我的解决方案是用<div style="display: inline-table;">...</div>
答案 3 :(得分:1)
我在制作导航栏时遇到了类似的问题,但以上方法都不适合我。
我的解决方案是为图像添加 height: 100%
。
如果您要水平对齐项目,请改为添加 width: 100%
。
编辑:Chrome 现在似乎默认添加此值,但您需要添加此值以确保兼容性。
答案 4 :(得分:0)
margin
以对齐图片:由于我们希望image
为left-aligned
,我们添加了:
img {
margin-right: auto;
}
同样image
为right-aligned
,我们可以添加margin-right: auto;
。该片段显示了两种对齐类型的演示。
祝你好运......
div {
display:flex;
flex-direction:column;
border: 2px black solid;
}
h1 {
text-align: center;
}
hr {
border: 1px black solid;
width: 100%
}
img.one {
margin-right: auto;
}
img.two {
margin-left: auto;
}
<div>
<h1>Flex Box</h1>
<hr />
<img src="https://via.placeholder.com/80x80" class="one"
/>
<img src="https://via.placeholder.com/80x80" class="two"
/>
<hr />
</div>
答案 5 :(得分:0)
将显示块用于flex容器内的图像
答案 6 :(得分:-1)
正在拉伸,因为align-self的默认值是Stretch。 这种情况有两种解决方案: 1.设置img align-self:center 要么 2.设置父对齐项:居中
img { align-self: center }
OR
.parent { align-items: center }