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

如何居中对齐Material UI Autocomplete中的Chip项

居中Material UI Autocomplete组件中的Chip项

要实现Chip项居中,关键是覆盖Autocomplete内部输入容器的默认样式,以下是可行方案:

方案一:自定义类名覆盖样式

通过makeStyles(或styled)创建自定义样式,直接修改Autocomplete输入容器的布局:

import { makeStyles } from '@material-ui/core/styles';
import Autocomplete from '@material-ui/lab/Autocomplete';
import Chip from '@material-ui/core/Chip';
import TextField from '@material-ui/core/TextField';

const useStyles = makeStyles({
  inputRoot: {
    '& .MuiAutocomplete-inputRoot': {
      display: 'flex',
      justifyContent: 'center',
      flexWrap: 'wrap',
    },
    // 可选:调整Chip之间的间距
    '& .MuiChip-root': {
      margin: '0 4px 4px 0',
    }
  }
});

function CenteredChipAutocomplete() {
  const classes = useStyles();
  const options = ["Option 1", "Option 2", "Option 3"];

  return (
    <Autocomplete
      multiple
      classes={{ inputRoot: classes.inputRoot }}
      options={options}
      renderTags={(value, getTagProps) =>
        value.map((option, index) => (
          <Chip key={index} label={option} {...getTagProps({ index })} />
        ))
      }
      renderInput={(params) => <TextField {...params} label="Centered Chips" />}
    />
  );
}

方案二:用Box组件包裹并穿透样式

如果坚持用Box组件,需要让样式穿透到Autocomplete的内部容器:

import Box from '@material-ui/core/Box';
import Autocomplete from '@material-ui/lab/Autocomplete';
import Chip from '@material-ui/core/Chip';
import TextField from '@material-ui/core/TextField';

function CenteredChipAutocomplete() {
  const options = ["Option 1", "Option 2", "Option 3"];

  return (
    <Box sx={{
      '& .MuiAutocomplete-inputRoot': {
        display: 'flex',
        justifyContent: 'center',
        flexWrap: 'wrap',
      }
    }}>
      <Autocomplete
        multiple
        options={options}
        renderTags={(value, getTagProps) =>
          value.map((option, index) => (
            <Chip key={index} label={option} {...getTagProps({ index })} />
          ))
        }
        renderInput={(params) => <TextField {...params} label="Centered Chips" />}
      />
    </Box>
  );
}

核心原理

Autocomplete的输入区域默认是左对齐的flex布局容器,只需将其justifyContent设置为center,同时保留flexWrap: wrap确保多行Chip也能居中排列。之前的Box样式未生效,是因为没有精准覆盖到Autocomplete内部的inputRoot容器样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:42:43