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

如何在Material-UI的Grid item组件中垂直居中对齐Chip组件

解决方案

问题根因

你当前的Grid容器仅配置了水平居中规则,没有设置垂直方向的对齐逻辑,同时承载Chip的Grid子项默认采用流式布局,内部内容会自动顶部对齐,当左侧ChatContent的高度随消息预览内容变化时,右侧Chip的位置就会偏离垂直中心。

具体修改步骤

步骤1:给外层Grid容器添加垂直居中属性

MUI的Grid容器默认不会做垂直方向的内容对齐,你需要给Grid container加上alignItems="center"属性,让整行的子项都基于容器垂直居中对齐。

注:如果你使用的是MUI v5版本,原来的justify属性要替换为justifyContent,alignItems属性保留即可。

步骤2:给承载Chip的Grid子项添加内部对齐规则

给xs=2的Grid子项配置flex布局,让内部的Chip本身也实现垂直居中,你可以直接通过Grid的内置属性配置,不需要额外写自定义样式。

修改后的核心代码

const styles = {
  root: {
    borderRadius: 8,
    height: 80,
    boxShadow: "0 2px 10px 0 rgba(88,133,196,0.05)",
    marginBottom: 10,
    display: "flex",
    alignItems: "center",
    "&:hover": {
      cursor: "grab",
    },
  },
  // 可选:如果仍有细微偏移可以加这个chip样式兜底
  chip: {
    alignSelf: "center"
  }
};

<Box
  onClick={() => this.handleClick(this.props.conversation)}
  className={classes.root} 
>
  <BadgeAvatar
    photoUrl={otherUser.photoUrl}
    username={otherUser.username}
    online={otherUser.online}
    sidebar={true}
  />
  {/* 这里添加alignItems="center" */}
  <Grid container justify="center" alignItems="center">
    <Grid item xs={10}>
      <ChatContent conversation={this.props.conversation} />
    </Grid>
    {/* 这里添加display、对齐属性,让Chip垂直+水平靠右对齐 */}
    <Grid item xs={2} display="flex" justifyContent="flex-end" alignItems="center">
      <Chip label="23" size="small" color="primary" className={classes.chip} />
    </Grid>
  </Grid>
</Box>

额外排查项

如果修改后仍然有细微偏移,可以检查ChatContent组件是否自带上下margin/padding,如果有可以给ChatContent外层包一层div,加上display: flex;align-items: center;属性即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 14:45:07