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

React Grid组件问题:添加display属性后无法垂直居中内容

解决MUI Grid响应式隐藏后无法垂直居中的问题

问题原因

你给绿色Grid设置display={{ xs: "none", sm: "block" }}时,覆盖了Grid容器默认的display: flex属性,导致flexDirection: "column"和justifyContent: "center"这些flex布局属性失效,自然没法实现垂直居中。

解决方案

方法1:用MUI Hidden组件实现响应式隐藏

直接用MUI的<Hidden>组件包裹绿色Grid,既不破坏Grid的flex容器特性,又能在xs屏幕下隐藏元素,同时保留垂直居中效果:

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

<Grid item container>
    <Grid
      item
      container
      sx={{
        height: 100,
        bgcolor: "red"
      }}
      xs={6}
    >
      I am high
    </Grid>

    <Hidden xsDown>
      <Grid
        item
        container
        xs={6}
        sx={{
          bgcolor: "green",
          flexDirection: "column",
          justifyContent: "center"
        }}
      >
        Vertically center me
      </Grid>
    </Hidden>
</Grid>

方法2:保持Grid的flex布局特性

如果不想额外引入Hidden组件,只需把display属性的sm值改为flex(而非block),让Grid在sm及以上屏幕下依然保持flex容器特性,flex相关属性就能正常生效:

<Grid item container>
    <Grid
      item
      container
      sx={{
        height: 100,
        bgcolor: "red"
      }}
      xs={6}
    >
      I am high
    </Grid>

    <Grid
      item
      container
      xs={6}
      sx={{
        bgcolor: "green",
        flexDirection: "column",
        justifyContent: "center"
      }}
      display={{ xs: "none", sm: "flex" }} // 将block替换为flex
    >
      Vertically center me
    </Grid>
</Grid>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:05:46