我尝试将一些基本样式应用于MUI v5中的自动完成组件中的选项。我只是尝试更改悬停时的背景颜色,并基于是否选中它。我尝试了基于文档的两种方法,使用主题,并将sx属性应用于自动完成。
使用主题几乎让我有,代码如下:
import { createTheme, ThemeProvider } from '@mui/material/styles';
const theme = createTheme({
components: {
MuiAutocomplete: {
styleOverrides: {
option: {
'&[aria-selected="true"]': {
backgroundColor: '#e3abed',
},
'&:hover': {
backgroundColor: '#9c27b0',
},
backgroundColor: '#fff',
},
},
},
},
})
我将ThemeProvider Package 在整个应用程序中
和组分:
<Autocomplete
options={['1', '2', '3']}
renderInput={(params) => <TextField {...params} label="Priority" />}
onChange={(_e, val) => setPriority(val)}
/>
所以,这几乎是可行的。然而,[aria-selected=“true”]样式只有在我将鼠标悬停在下拉菜单中的另一个选项上时才被应用。否则,组件将默认为灰色,我不明白为什么。
我尝试过的第二种方法是在Autocomplete组件上使用sx prop,在文档中它说你可以通过类名来定位子组件:https://mui.com/material-ui/customization/how-to-customize/#overriding-styles-with-class-names
以下是我的组件:
<Autocomplete
options={['1', '2', '3']}
renderInput={(params) => <TextField {...params} label="Priority" />}
onChange={(_e, val) => setPriority(val)}
sx={{
'& .MuiAutocomplete-option': {
backgroundColor: '#000',
},
'& .Mui-focused': {
backgroundColor: 'red',
},
}}
open
/>
这似乎没有任何效果。我已经在这上面工作了将近2个小时,似乎还不能到达终点线。任何帮助都将不胜感激。
3条答案
按热度按时间e5njpo681#
我也有同样的问题我只需要进一步探索
Autocomplete
API文档的Props部分。如果您不想处理全局主题定制,有几种定制可能性:PaperComponent
属性允许定制 "用于呈现弹出窗口主体的组件"。 请注意,简单地在Autocomplete
上使用sx
在这里不起作用,因为(如@bnays-mhz所指出的)嵌套PaperComponent
的PopperComponent
位于主DOM树之外(用于z索引/模态UX用途)。renderGroup
属性允许覆盖选项组标题的呈现。renderOption
属性允许覆盖单个选项的渲染。bvk5enib2#
可以通过目标类覆盖自动完成选项css
'. Mui自动完成弹出器'
您必须全局应用css,因为这个节点是在DOM的根元素之外创建的。
lmyy7pcs3#
你可以试试这个来设置css的选项,单一选项和悬停(聚焦)
自定义可在Mui V5中使用的自动完成组件的简单方法