首先,如果你检查DOM结构
<div class="MuiTabs-root Tabs" aria-label="disabled tabs example">
<div class="MuiTabs-scroller MuiTabs-fixed" style="overflow: hidden;">
<div class="MuiTabs-flexContainer" role="tablist">
</div>
</div>
</div>;
你会发现需求 className 是MuiTabs-flexContainer(而不是tabFlexContainer
)
示例:对于Tabs,所有 className 都可以在MUI Tabs CSS API 中找到
除了 normalwithStyles
和之外,还有很多解决方案makeStyles
可以完全覆盖:
1.Material-UI解决方案
1.1 使用 MUI 内部样式 HOC withStyles来完全覆盖组件。
使用嵌套选择器
import { Tabs, Tab, withStyles } from "@material-ui/core";
const StyledTabs = withStyles({
root: {
background: "light-blue",
...
boxShadow: "0 3px 5px 2px rgba(255, 105, 135, .3)",
"& div.MuiTabs-scroller": {
"& .MuiTabs-flexContainer": {
background: "linear-gradient(45deg, #FE6B8B 30%, #FF8E53 90%)"
}
}
}
})(Tabs);
1.2 使用普通的createStyles或makeStyles样式解决方案
经典组件
withStyles(高阶函数)+ createStyles
功能组件
useStyles(hooks) + makeStyles
详细参考:https : //stackoverflow.com/a/60736142/11872246
2.Styled-Components 解决方案
如果您想使用单独的 CSS 文件来设置 MUI 组件的样式
你可以试试样式组件
styled-components 允许您编写实际的 CSS 代码来设置组件的样式。
用法:
import styled from 'styled-components';
import { Tabs, Tab, withStyles } from "@material-ui/core";
const StyledTabs = styled.Tabs`
font-size: 1.5em;
...
`;
3.单独的纯CSS解决方案
参考:css_selectors
import "./styles.css";
div.MuiTabs-flexContainer {
background: linear-gradient(45deg, red 30%, #ff8e53 90%);
}