You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制包含大图片的div.card的最大高度?

嵌套网格容器图片溢出的跨浏览器兼容问题

我有一个包含多个.card子元素的.container容器,需要限制.card的高度以避免内部大尺寸图片溢出。我将.container设置为网格容器,配置grid-auto-rows: minmax(auto, 200px)后,.card的尺寸确实被限制,但内部图片依然溢出——即便给图片设置了max-height: 100%。

这个效果在Firefox中符合预期,但Chromium浏览器表现异常;移除.card的display: grid属性后,Chromium显示正常,但我需要保留该属性,以便后续在.card内添加文本内容。请问这属于浏览器bug吗?

问题复现代码

HTML

<div class="container">
    <div class="card">
        <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1200px-Fronalpstock_big.jpg">
    </div>
    <div class="card">
        <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1200px-Fronalpstock_big.jpg">
    </div>
</div>

CSS

div.container {
    display: grid;
    grid-auto-rows: minmax(auto, 200px);
}

div.card {
    display: grid;
}

div.card > img {
    max-height: 100%;
}

浏览器表现差异

  • Chromium显示结果:
    Chromium显示结果

  • Firefox预期显示结果:
    Firefox预期显示结果

问题分析与解决方案

这并非严格意义上的浏览器bug,而是Chromium与Firefox对CSS网格规范中高度约束传递的解析差异。当.card作为嵌套网格容器时,Chromium没有正确将父容器(.container)的高度限制传递给内部图片,导致max-height: 100%无法生效。

可以通过以下两种方法解决:

  1. 给.card显式设置height: 100%,强制高度约束传递到内部元素:
div.card {
    display: grid;
    height: 100%;
}
  1. 配合width: 100%和object-fit属性优化图片显示(可选,保持图片比例同时填充容器):
div.card > img {
    max-height: 100%;
    width: 100%;
    object-fit: cover;
}

内容的提问来源于stack exchange,提问作者Bino Manjesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 18:02:37