首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用scss覆盖MUI

用scss覆盖MUI
EN

Stack Overflow用户
提问于 2022-11-03 00:57:53
回答 2查看 40关注 0票数 2

我正在开发一个使用MUI和Sass的React项目。目前有多个scss文件装满了!important,用sass覆盖MUI样式.我试图通过删除!important并添加:

代码语言:javascript
复制
import { StyledEngineProvider } from '@mui/material/styles';
import CssBaseline from '@mui/material/CssBaseline'

<CssBaseline />
<StyledEngineProvider injectFirst>
*** component tree here ***
</StyledEngineProvider>

如下所示:发布@Mui和模块化scss间歇性竞争。如何一致地用scss模块覆盖@mui默认样式?

它一开始似乎有效,但当您专注于组件时,它就停止工作了。例如,当这个按钮悬停在上面时,它会变成白色的蓝色边框:

scss

代码语言:javascript
复制
.button {
    width: 250px;
    height: 50px;
    border: 1px solid grey;
    border-radius: 15px;
    text-transform: none;
}

.go-button {
    @extend .button;
    background-color: grey;
    color: whitesmoke;
}

反应

代码语言:javascript
复制
<Button
   className="go-button"
   variant="outlined"
   onClick={handleClick}
>
   Go
</Button>

我们不使用模块或makeStyles。在没有!important的情况下,覆盖MUI的最好方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-03 03:43:00

许多MUI组件的默认样式将包括一些特定状态的样式,如:hover.Mui-focused,这些状态的特异性要高于默认状态的样式。当覆盖这些样式时,您需要使用相同的专用性。

例如,Button特定于悬停的默认样式,所以您需要为悬停状态指定样式重写。

例如,这里有一种可能的方法来定义按钮样式:

代码语言:javascript
复制
.button {
  width: 250px;
  height: 50px;
  border: 1px solid grey;
  border-radius: 15px;
  text-transform: none;
}

.go-button {
  @extend .button;
  background-color: grey;
  color: whitesmoke;
}
.go-button:hover {
  @extend .go-button;
  background-color: #999;
}

票数 1
EN

Stack Overflow用户

发布于 2022-11-03 01:05:50

根据我的知识经验,您必须使用带有MUI的样式组件,因为它们有更好的对而不是SCSS,有了更好的对,您可以更好地使用网站的性能&使用样式组件,您可以轻松修改MUI的更改。

请访问此链接以了解高级用法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74297121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档