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

如何在React MUI中缩小首个Grid元素宽度并让其余三个均分剩余空间?

在Material UI中调整Grid元素宽度的实现方案

要实现缩小第一个Grid元素宽度、让另外3个均分释放空间的效果,有两种常用方案,是否需要修改xl/lg/md/sm/xs这些断点属性,取决于你是否需要响应式适配:

方案一:基于12列网格的响应式调整(推荐多场景适配)

Material UI Grid的断点属性(xs/sm等)是控制不同屏幕尺寸下列宽的核心,如果你需要在不同设备上都保持比例适配,可以用这种方式:

  • 给第一个Grid Item设置更小的固定列数(比如xs={2}),并添加flexShrink={0}防止它被压缩
  • 剩下的三个Grid Item设置基础列数(比如xs={1}),再加上flexGrow={1},让它们自动平分剩余的网格空间

代码示例:

import Grid from '@mui/material/Grid';

<Grid container spacing={2}>
  {/* 第一个元素:固定占2列,不被压缩 */}
  <Grid item xs={2} flexShrink={0}>
    {/* 你的内容 */}
  </Grid>
  {/* 剩余三个元素:均分剩余空间 */}
  <Grid item xs={1} flexGrow={1}>
    {/* 你的内容 */}
  </Grid>
  <Grid item xs={1} flexGrow={1}>
    {/* 你的内容 */}
  </Grid>
  <Grid item xs={1} flexGrow={1}>
    {/* 你的内容 */}
  </Grid>
</Grid>

方案二:自定义宽度 + Flex布局(灵活无网格约束)

如果不需要遵循12列网格规则,也不需要响应式调整,直接通过自定义宽度和Flex属性实现:

  • 给第一个Grid Item设置固定宽度或百分比(比如width: '15%'),并禁用压缩
  • 剩下的三个Grid Item设置flex: 1,自动平分剩余空间

代码示例:

import Grid from '@mui/material/Grid';

<Grid container spacing={2}>
  <Grid item style={{ width: '15%', flexShrink: 0 }}>
    {/* 第一个元素内容 */}
  </Grid>
  <Grid item style={{ flex: 1 }}>
    {/* 第二个元素内容 */}
  </Grid>
  <Grid item style={{ flex: 1 }}>
    {/* 第三个元素内容 */}
  </Grid>
  <Grid item style={{ flex: 1 }}>
    {/* 第四个元素内容 */}
  </Grid>
</Grid>

关于断点属性的说明

  • 如果你的布局需要在不同屏幕尺寸(比如大屏、平板、手机)下有不同的宽度比例,必须修改xl/lg/md/sm/xs这些属性,比如给第一个元素设置lg={3}(大屏)、md={2}(中屏)、xs={1}(小屏),剩余元素对应调整flex规则
  • 如果只是单一尺寸下的固定调整,不需要修改这些断点属性,用方案二的自定义方式更直接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:30:59