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

如何将多屏幕网格参数适配到grid-template-columns的repeat函数?

实现适配多屏幕的网格布局

核心思路是利用CSS Grid的gap属性处理列间距(gutter),结合媒体查询为不同屏幕尺寸设置对应的外边距、列数和间距,再通过repeat(列数, 1fr)让列自动平分剩余空间。

代码实现

先写基础的移动端样式(对应360px宽度屏幕):

.grid-container {
  /* 左右外边距对应18px参数 */
  margin: 0 18px;
  display: grid;
  /* gutter对应10px参数 */
  gap: 10px;
  /* 6列布局,每列平分剩余空间 */
  grid-template-columns: repeat(6, 1fr);
}

然后通过媒体查询适配840px宽度屏幕:

@media (min-width: 840px) {
  .grid-container {
    /* 左右外边距对应26px参数 */
    margin: 0 26px;
    /* gutter对应12px参数 */
    gap: 12px;
    /* 12列布局 */
    grid-template-columns: repeat(12, 1fr);
  }
}

原理说明

  • margin直接控制容器的左右外边距,完全匹配你给定的尺寸参数;
  • gap是Grid原生的间距属性,自动处理列之间的gutter,不需要手动计算总间距占用的空间;
  • repeat(列数, 1fr)中,1fr代表“剩余空间的1份”,Grid会自动把容器内部的可用宽度(容器宽度 - 总gap)平均分成指定列数,实现自适应的列宽。

优化补充(可选)

如果希望屏幕宽度超过840px时,容器不再继续变宽,保持固定的设计宽度,可以给容器添加max-width:

@media (min-width: 840px) {
  .grid-container {
    /* 计算容器最大宽度:840px屏幕宽度 - 左右margin总和 */
    max-width: calc(840px - 26px * 2);
    /* 水平居中 */
    margin: 0 auto;
    gap: 12px;
    grid-template-columns: repeat(12, 1fr);
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:10:27