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

React中如何使用Material UI实现两个图表并排居中显示?

问题根因

你当前的Grid配置仅在屏幕宽度≥600px(MUI默认sm断点阈值)时才会让两个子项各占一半宽度,屏幕宽度小于该值时,Grid子项默认占满12份整宽,就会呈现上下堆叠的效果。除此之外还有两个高频问题会导致屏幕宽度足够时依然堆叠:

  • Grid容器本身没有设置正确的宽度与flex布局属性,被父元素限制宽度后不足以容纳两个并排的子项
  • 内部的Nifty50、Sensex图表组件默认强制撑满整行宽度,把同排的Grid子项挤到下一行
可直接复用的修正代码

如果需要所有屏幕尺寸下两个图表都保持并排,给Grid子项加上xs={6}配置(xs是最小尺寸断点,配置后覆盖所有屏幕宽度规则),同时补充容器居中、子项居中、图表宽度自适应的属性即可:

<Grid 
  container 
  spacing={2} 
  sx={{ width: '100%', margin: '0 auto' }}
>
  <Grid item xs={6} sx={{ display: 'flex', justifyContent: 'center' }}> 
    <Nifty50 style={{ maxWidth: '100%', height: 'auto' }} />
  </Grid>
  <Grid item xs={6} sx={{ display: 'flex', justifyContent: 'center' }}> 
    <Sensex style={{ maxWidth: '100%', height: 'auto' }} />
  </Grid>
</Grid>
额外优化建议
  • 如果你需要保留响应式规则:小屏(宽度<600px)上下堆叠、大屏并排展示,把上面代码里的xs={6}换回sm={6}即可
  • 想要让整个图表区块在页面中保持合适的最大宽度、不会在超大屏幕下拉伸变形,可以在Grid外层套MUI自带的Container组件:
import Container from '@mui/material/Container';

// 页面其他内容...
<Container maxWidth="lg">
  {/* 上面写好的Grid组件放在这里 */}
</Container>
  • 如果修改后依然出现堆叠问题,检查项目里的全局CSS,是否有强制给所有div设置width: 100% !important、覆盖flex布局属性的规则,这类全局样式会破坏MUI Grid的默认排版逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:27:32