
本文详解如何在 mui(material ui)中正确使用 `sx` prop 为 `menuitem` 设置选中态(selected)样式,重点解决 `&:selected` 无效问题,并提供适用于 `select` 下拉菜单和独立 `menuitem` 的两种可靠方案。
在 MUI 中,MenuItem 组件本身并不原生支持 :selected 伪类——这是常见误区。浏览器标准中 :selected 仅适用于
✅ 正确方式是使用 .Mui-selected 类选择器:
const MenuItemStyle = {
'&:hover': {
backgroundColor: theme.palette.secondary.light, // 推荐使用 palette 而非硬编码 color
},
'&.Mui-selected, &.Mui-selected:hover': {
backgroundColor: theme.palette.secondary.light,
fontWeight: 'bold' as const, // 可追加其他视觉反馈
},
'&:focusVisible': {
outline: '2px solid',
outlineColor: theme.palette.primary.main,
},
};并在组件中使用:
⚠️ 注意事项:
一个用C#开的网站购物交易系统,带源码仅供学习参考,应用了WebCalendar控件。后台登陆帐号和密码分别为:admin admin WebCalendar控件是一个ASP.Net Web应用程序的日期控件,您可以通过设置控制控件中不同部分的样式的属性,来自定义 WebCalendar 控件的外观和图片;支持手动输入日期,支持输入时间,不会被TextBox,DropDownList遮挡。并且她是
- &.Mui-selected 必须带点号(.),表示匹配元素自身具有该 class;
- &.Mui-selected:hover 是合法组合:当菜单项既被选中又处于悬停状态时生效;
- 避免使用字符串模板拼接颜色(如 `${theme.color.secondaryHover}`),应优先使用 theme.palette(更符合 MUI 主题规范且支持深色模式);
- 若 MenuItem 位于 Select 组件内部,推荐将样式统一提升至 MenuProps.sx,实现批量控制:
? 小结:MUI 的状态类名(如 Mui-selected, Mui-focused, Mui-disabled)是覆盖默认样式的唯一可靠途径;切勿依赖原生伪类(:selected, :checked 等)。结合 sx 的 CSS-in-JS 能力与 MUI 的语义化 class 命名,即可精准、可维护地定制交互反馈。









