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

如何让响应式Grid卡片中第二个div拥有相同垂直起始点?

问题描述

我有一个包含卡片的响应式Grid布局,每张卡片包含两个垂直堆叠的div,各自内容长度不同。我需要让所有卡片中的第二个div拥有相同的垂直起始点(即使上方内容长度和第二个div自身内容长度均不同),使用justify-content: space-between无法实现,因为它只是将第二个div固定在卡片底部。

解决方案

要实现所有卡片中第二个div的垂直起始点对齐,给卡片内的第一个div设置flex-grow: 1,让它填充卡片内的剩余空间即可。

修改后的CSS代码

.grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-column-gap: 5rem;
}
.card { 
    border: 1px solid; 
    display: flex; 
    flex-direction: column; 
}
.card div:first-child {
    color: red;
    flex-grow: 1; /* 关键属性:让第一个div填充剩余垂直空间 */
}
.card div:last-child {
    color: blue;
}

对应HTML结构

<div class="grid">
    <div class="card">
        <div>First div with short content</div>
        <div>Second div with content</div>
    </div>
    <div class="card">
        <div>First div with much longer content that takes up more space</div>
        <div>Second div with content and a bit more </div>
    </div>
    <div class="card">
        <div>First div with much longer content that takes up more space and more content again and again and some more text and again</div>
        <div>Less content</div>
    </div>
</div>

原理说明

  • 卡片采用flex-direction: column的弹性布局,子元素默认垂直排列。
  • flex-grow: 1会让第一个div自动填充卡片内除第二个div外的所有可用垂直空间,无论第一个div内容长短,最终都会被拉伸至相同高度,从而让第二个div的顶部自然对齐在同一水平线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:50:08