【发布时间】:2019-09-01 22:39:46
【问题描述】:
我有一个包含 img 弹性项目的弹性容器。
我希望 img 忽略其固有高度 (90px),以便高度可以缩小以匹配兄弟的弹性项目高度(按照默认的 align-items: stretch 样式)。
.container {
border: 1px solid;
display: flex;
}
.item {
border: 1px solid;
}
.content {
width: 200px;
height: 50px;
background-color: hotPink;
}
<div class="container">
<img class="item" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRu-3yBSd2b6JCOMcGVSOFf8X49QB3Ik-OI87gKEMwWLrdJxP5qOErmZQ">
<div class="item">
<div class="content"></div>
</div>
</div>
如果我们将img 换成div,我们可以看到所需的行为:
.container {
border: 1px solid;
display: flex;
}
.item {
border: 1px solid;
}
.dynamicHeightContent {
width: 120px;
height: 100%;
background-color: green;
}
.content {
width: 200px;
height: 50px;
background-color: hotPink;
}
<div class="container">
<div class="item">
<div class="dynamicHeightContent"></div>
</div>
<div class="item">
<div class="content"></div>
</div>
</div>
我在img 上尝试过min-height: 0,但无济于事。
- 适用于
img但不适用于div的特殊行为是什么? - 我们如何选择退出
img的特殊行为,使其表现得像其他弹性项目(例如div)?如果无法选择退出,是否有推荐的解决方法?
请注意,虽然img 不会缩小其高度,但它确实会增长:
.container {
border: 1px solid;
display: flex;
}
.item {
border: 1px solid;
}
.content {
width: 200px;
height: 300px;
background-color: hotPink;
}
<div class="container">
<img class="item" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRu-3yBSd2b6JCOMcGVSOFf8X49QB3Ik-OI87gKEMwWLrdJxP5qOErmZQ">
<div class="item">
<div class="content"></div>
</div>
</div>
注意:我很乐意忽略img 的纵横比。我打算避免通过object-fit: cover 扭曲img。
【问题讨论】:
-
将图像包裹在
div中,看看有什么不同... -
哦,我看到图像不会缩小超过 90px 的原始高度,这是有道理的,因为这是 flex 项目的内容。