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

React+TailwindCSS项目:CSS Grid下居中多余Div并统一卡片高度

解决方案

1. 统一所有卡片高度

要让所有卡片(无论是否在同一行)高度匹配最高卡片,结合Grid布局特性,给Grid容器设置grid-auto-rows: 1fr,同时让卡片容器和卡片组件本身占满高度即可:

修改后的JSX代码:

<div className="container">
   <div className="grid grid-cols-4 gap-x-2 gap-y-4" style={{ gridAutoRows: '1fr' }}>
       {valueCards.map(
          (item, index) => (
             <div key={index} className="h-full">
                 <ValuesCard 
                     description={item.description} 
                     isPrimary={index % 2 === 0} 
                     className="h-full" 
                 />
             </div> 
          )
        )}
    </div>
</div>
  • gridAutoRows: '1fr':强制Grid所有行高度相等,自动匹配最高行的高度。
  • h-full:让卡片容器和ValuesCard组件完全填充所在Grid单元格的高度,确保所有卡片高度统一。

2. 让最后一行卡片居中显示

解决最后一行卡片左对齐的问题,给Grid容器添加Tailwind的justify-content-center类即可:

<div className="container">
   <div className="grid grid-cols-4 gap-x-2 gap-y-4 justify-content-center" style={{ gridAutoRows: '1fr' }}>
       {valueCards.map(
          (item, index) => (
             <div key={index} className="h-full">
                 <ValuesCard 
                     description={item.description} 
                     isPrimary={index % 2 === 0} 
                     className="h-full" 
                 />
             </div> 
          )
        )}
    </div>
</div>

justify-content-center会让Grid的列在容器内居中排列,当最后一行不足4个卡片时,自然呈现居中效果。

替代方案:用Flex布局实现

如果你更倾向于Flex布局,也能达到同样效果:

<div className="container">
   <div className="flex flex-wrap justify-center gap-x-2 gap-y-4">
       {valueCards.map(
          (item, index) => (
             <div key={index} className="w-[calc(25%-0.375rem)]">
                 <ValuesCard 
                     description={item.description} 
                     isPrimary={index % 2 === 0} 
                     className="h-full" 
                 />
             </div> 
          )
        )}
    </div>
</div>
  • flex flex-wrap justify-center:启用Flex换行并让每行元素居中。
  • w-[calc(25%-0.375rem)]:计算4列布局下的卡片宽度,减去gap的分摊值,避免卡片超出容器宽度。
  • Flex默认的align-items: stretch会让所有卡片容器高度自动匹配最高项,配合h-full即可实现卡片高度统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:15:44