【发布时间】:2022-01-06 01:40:18
【问题描述】:
我正在使用 makeStyles 和 useClasses 创建类。但在大多数情况下,MUI CSS 正在被应用,而我的类只能通过使用“!important”来应用。有没有办法在没有“!important”的情况下覆盖 MUI 样式。在使用重要时,默认情况下有一些 MUI CSS 失败。同样来自相同代码的徽标甚至可以在不使用 !important 的情况下正常工作。 This shows MUI CSS overriding makeStyles CSS.
import React, { useState, useEffect } from "react";
import AppBar from "@mui/material/AppBar";
import { makeStyles, createStyles } from "@mui/styles";
import Tabs from "@mui/material/Tabs";
import Tab from "@mui/material/Tab";
import Toolbar from "@mui/material/Toolbar";
import logo from "../../assets/logo.svg";
import Button from "@mui/material/Button";
import { Link } from "react-router-dom";
const useStyles = makeStyles((theme) => ({
toolbarMargin: {
...theme.mixins.toolbar,
marginBottom: "3em",
},
logo: {
height: "8em",
},
tabContainer: {
marginLeft: "auto",
},
tab: {
...theme.typography.tab,
minWidth: 10,
marginLeft: "25px !important",
},
button: {
...theme.typography.estimate,
borderRadius: "50px !important",
marginLeft: "50px !important",
marginRight: "25px !important",
height: "45px !important",
},
logoContainer: {
padding: "0px !important",
"&:hover": {
backgroundColor: "transparent",
},
},
}));
export default function Header(props) {
const classes = useStyles();
return (
<React.Fragment>
<ElevationScroll>
<AppBar position='fixed'>
<Toolbar disableGutters>
<Button
disableRipple
className={classes.logoContainer}
component={Link}
to='/'
>
<img src={logo} alt='company Logo' className={classes.logo}></img>
</Button>
<Tabs
className={classes.tabContainer}
value={0}
textColor='#fff'
onChange={handleChnage}
indicatorColor='primary'
>
<Tab
className={classes.tab}
component={Link}
to='/'
label='Home'
/>
<Tab
className={classes.tab}
component={Link}
to='/services'
label='Services'
/>
</Tabs>
<Button
variant='contained'
className={classes.button}
color='secondary'
>
Free Estimate
</Button>
</Toolbar>
</AppBar>
</ElevationScroll>
</React.Fragment>
);
}
【问题讨论】:
-
你的问题是选择器specitivity。由于两个选择器都具有相同的特定性,因此稍后定义的选择器将覆盖第一个选择器。通过使用
!important你打破了特异性。我不太了解makeCss,但解决方案是增加makeCss创建的选择器的特异性。这将使它通过特异性覆盖您的 MUI 样式,并且您将能够删除所有!important。
标签: css reactjs material-ui