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

Material UI v5 Autocomplete默认endAdornment样式异常求助

解决Material UI v5 Autocomplete组件endAdornment图标位置偏移问题

问题原因

Autocomplete组件默认的endAdornment元素被设置了top:unset的CSS属性,导致下拉箭头无法通过top:50%和transform: translateY(-50%)实现垂直居中,出现位置偏移。

解决方法

方法1:组件内局部覆盖样式

直接在Autocomplete渲染的TextField组件中,通过sx属性精准覆盖endAdornment的样式:

修改后的TextField代码示例:

<TextField
  {...props}
  label={`${translateFullContent(t, i18n, `ActionSelector.shiftGroup`)}`}
  variant="outlined"
  placeholder="Select a shift group"
  sx={{
    backgroundColor: "#fff",
    // 强制覆盖endAdornment的top属性
    '& .MuiAutocomplete-endAdornment': {
      top: '50% !important',
      transform: 'translateY(-50%)',
    },
  }}
/>

方法2:全局主题配置(适合多组件场景)

如果项目中有多个Autocomplete组件需要修复这个问题,可以通过自定义Material UI主题全局修改样式:

import { createTheme, ThemeProvider } from '@mui/material/styles';

const customTheme = createTheme({
  components: {
    MuiAutocomplete: {
      styleOverrides: {
        endAdornment: {
          top: '50%',
          transform: 'translateY(-50%)',
        },
      },
    },
  },
});

// 在应用根组件或目标组件外层包裹ThemeProvider
<ThemeProvider theme={customTheme}>
  {/* 你的Autocomplete组件所在区域 */}
</ThemeProvider>

方法3:排查全局样式冲突

检查项目中的全局CSS文件或第三方样式库,是否有针对.MuiAutocomplete-endAdornment类设置了top:unset,如果有直接删除或修改该样式规则即可。

修改后效果

通过上述方法覆盖top:unset后,endAdornment的下拉箭头会自动应用top:50%并垂直居中,恢复正常渲染效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 10:03:11