Material-UI按钮样式覆盖不了自定义的CSS如何解决? IT人凡敬 提问于 2026-01-28 11:07:26 阅读 74 组件 我在用Vue和Material-UI做按钮组件时遇到问题,想给按钮加个悬停效果,但自定义的CSS样式完全没生效… 代码是这样的: 点击我 .custom-btn { background: #4CAF50 !important; } .custom-btn:hover { opacity: 0.8; } 样式表里加了!important还是没变颜色,悬停效果更是完全没反应。我检查过类名确实被正确添加到按钮元素上了,但Material-UI的默认样式好像优先级更高?试过把scoped去掉也不行… Button按钮 我来解答 赞 16 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 Prog.子璇 Lv1 问题应该出在Material-UI的样式优先级机制上。它使用了JSS来生成样式,这些样式通常是内联的,优先级本身就比较高,所以就算你加了!important也不一定管用。 解决方法有两种: 第一种是直接用Material-UI的API来自定义样式。比如这样: import React from 'react'; import { makeStyles } from '@material-ui/core/styles'; import Button from '@material-ui/core/Button'; const useStyles = makeStyles({ customBtn: { background: '#4CAF50', '&:hover': { opacity: 0.8, }, }, }); export default function CustomButton() { const classes = useStyles(); return ( 点击我 ); } 这种方式最推荐,因为它是Material-UI官方支持的自定义方式。 第二种方法是调整你的CSS选择器优先级。可以试试这样写: .custom-btn.MuiButton-root { background: #4CAF50 !important; } .custom-btn.MuiButton-root:hover { opacity: 0.8 !important; } 这里通过组合选择器增加了权重,覆盖掉Material-UI的默认样式。 我个人更建议用第一种方法,毕竟Material-UI的设计初衷就是让你用它的API去定制样式,强行用外部CSS覆盖反而容易出问题。 回复 点赞 20 2026-01-29 17:01 加载更多 相关推荐 2 回答 114 浏览 Material-UI按钮自定义样式被覆盖怎么办? 在用Material-UI的Button组件时,给按钮加了自定义CSS类,但样式总是被覆盖。比如设置红色背景颜色完全没效果,这是为什么啊? 我尝试过这样写: import { Button } fro... Top丶柯佳 框架 2026-02-04 18:47:28 1 回答 116 浏览 Material-UI按钮自定义样式被默认样式覆盖怎么办? 在用Material-UI的Button组件时,我想给按钮加个圆角和渐变背景,但发现自定义的CSS类和内联样式都没生效。之前试过用sx prop和className,但样式总是被覆盖... 比如这个代... UX增芳 框架 2026-02-08 21:26:24 2 回答 73 浏览 为什么Material-UI按钮的CSS样式完全没生效? 我在用Material-UI的Button组件时,自己写的CSS样式完全没效果,按钮还是默认的蓝色。尝试过加!important也不行... 场景是想让按钮背景变成红色,文字白色。写了个类这样: .m... 青霞 组件 2026-02-06 08:41:31 2 回答 19 浏览 Material-UI 的 Snackbar 为什么样式不生效? 我用 Material-UI 的 Snackbar 组件,想自定义它的背景色和文字颜色,但加了 sx 样式没反应。试过用 styled 包裹也不行,是不是被默认样式覆盖了? 这是我在组件里写的 CSS... 南宫耘博 组件 2026-03-04 22:04:18 1 回答 35 浏览 Material-UI 的 Button 为什么样式没生效? 我按照文档引入了 Material-UI 的 Button 组件,但按钮看起来还是原生样式,没有 Material Design 的效果,是不是哪里漏了? 我已经装了 @mui/material 和 ... 技术红芹 组件 2026-03-04 12:57:17 2 回答 66 浏览 UIkit滑块组件如何自定义滑块按钮样式? 在用UIkit的Slider组件时想给滑块按钮加圆角和阴影,但直接写CSS好像被覆盖了。我按照文档初始化了滑块: 然后给.uk-slider-nav的li元素加了这些样式: .uk-slider-na... 端木尚昆 组件 2026-01-29 11:16:31 1 回答 57 浏览 Material-UI的TextField输入框样式怎么自定义不生效? 我用Material-UI的TextField组件,想改一下输入框的边框颜色和高度,但加了sx或者styled好像都没反应,是不是被默认样式覆盖了? 试过在sx里写borderColor,也试过用st... 码农卫红 组件 2026-03-23 14:59:20 2 回答 77 浏览 Material-UI 的 Button 组件怎么自定义颜色不生效? 我用 Material-UI 的 Button 组件,想改个自定义的背景色,但写成 color="primary" 只能用主题里预设的颜色,自己传 hex 值根本不生效,咋整? 试过直接加 sx 属性... 爱学习的瑞腾 框架 2026-03-14 21:04:24 2 回答 46 浏览 Material-UI的Badge徽章怎么总盖不住按钮图标? 我在用Material-UI的Badge包裹按钮时,发现徽章总是显示在图标下方,而不是右上角。按照文档用了anchorOrigin和transform属性,但位置还是不对: <Badge bad... 公孙文博 组件 2026-02-16 09:13:23 1 回答 48 浏览 Material-UI 的 Button 组件为什么样式没生效? 我刚在 React 项目里装了 @mui/material,想用它的 Button 组件,但页面上显示的就是个普通按钮,没有任何 Material 风格的样式。是不是漏了什么? 我已经按文档引入了组件... UX一莹 框架 2026-03-26 19:38:19
!important也不一定管用。解决方法有两种:
第一种是直接用Material-UI的API来自定义样式。比如这样:
这种方式最推荐,因为它是Material-UI官方支持的自定义方式。
第二种方法是调整你的CSS选择器优先级。可以试试这样写:
这里通过组合选择器增加了权重,覆盖掉Material-UI的默认样式。
我个人更建议用第一种方法,毕竟Material-UI的设计初衷就是让你用它的API去定制样式,强行用外部CSS覆盖反而容易出问题。