【发布时间】:2019-05-28 02:07:21
【问题描述】:
我有一个 div,其中包含一个图像和一个段落。
<div id="container">
<img src="..." />
<p>
This is my text
</p>
</div>
我使用 flex-box 和 flex-direction: column 来对齐它们。
#container {
display: flex;
flex-direction: column;
height: 300px;
width: 400px;
}
img {
max-width: 80%;
flex-basis: 50%;
}
p {
flex-basis: 50%;
}
由于img 和p 都有flex-basis 50%,我希望它们每个都占用50% 的空间。在 Firefox 中它可以工作,但在 Chrome 中,图像比容器本身更大(高度)。
我制作了一个 jsfiddle 来证明这一点:https://jsfiddle.net/q2esvro9/1/
如何在 Chrome 中获取 Firefox 的行为?
(另一个有趣的事实:在 Internet Explorer 11 中,图像和文本占据了相同的空间,但图像的宽度被拉伸了。这意味着对于非常短且简单的 CSS 代码有 3 种不同的行为)
#container {
display: flex;
align-items: center;
align-content: center;
text-align: center;
flex-direction: column;
border: solid 2px red;
height: 300px;
width: 400px;
}
img {
max-width: 80%;
flex-basis: 50%;
}
p {
flex-basis: 50%;
border: solid 2px green;
}
<div id="container">
<img src="https://image.freepik.com/free-icon/apple-logo_318-40184.jpg" />
<p>
This is my text
</p>
</div>
【问题讨论】:
-
不知道为什么浏览器会在这里发生不同的事情,但你可以为我想的 img css 添加
max-height: 50% -
min-height:0 图片将解决此问题
-
但它破坏了纵横比(在 Chrome 上)。
-
在我看来并不完全重复,因为这里的解决方案是一个两步过程。副本仅涵盖一个。
标签: css google-chrome firefox flexbox