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

如何为Grid同一行内的Button和CircularProgress组件添加间距

问题原因

你使用的Material UI的Grid容器spacing属性仅对直接子节点为Grid item的元素生效,你直接将Button和CircularProgress作为Grid容器的子元素,所以设置的spacing属性不会产生间距。另外你设置的spacing={50}数值过大,MUI默认spacing以8px为单位,50对应400px间距,就算生效也不符合你要的少量间距需求。

可行解决方法
  • 方案1:给两个子元素套Grid item,使用原生spacing控制间距
    调整spacing到合适数值,比如spacing={2}对应16px间距,同时添加对齐属性保证两个元素垂直居中,修改后代码如下:
<Grid
  container
  direction="row"
  spacing={2}
  alignItems="center"
>
  <Grid item>
    <Button
      variant="contained"
      color="primary"
      size="large"
      style={{ marginTop: '1em' }}
      onClick={() => {
        //code
      }}
    >
      Import Games
    </Button>
  </Grid>
  {showCircularProgress ? (
    <Grid item>
      <CircularProgress style={{ marginTop: '1em' }} />
    </Grid>
  ) : null}
</Grid>;
  • 方案2:直接加边距,无需修改结构
    直接给CircularProgress添加上左外边距即可,调整数值到你需要的间距大小即可:
<CircularProgress style={{ marginTop: '1em', marginLeft: '12px' }} />

也可以给Button加右外边距,效果完全一致:

<Button
  variant="contained"
  color="primary"
  size="large"
  style={{ marginTop: '1em', marginRight: '12px' }}
  onClick={() => {
    //code
  }}
>
  • 方案3:给Grid容器加gap属性
    直接通过flex布局的gap属性控制间距,不需要修改子元素结构,还可以把公共的marginTop属性提出来简化代码:
<Grid
  container
  direction="row"
  style={{ gap: '12px', marginTop: '1em' }}
  alignItems="center"
>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:27:04