gpt4 book ai didi

javascript - material-ui 用 useStyles/jss 覆盖主题

转载 作者:行者123 更新时间:2023-11-30 10:57:25 25 4
gpt4 key购买 nike

如何在不使用 !important 的情况下使用样式覆盖 Material-UI 主题?

const theme = createMuiTheme({
overrides: {
MuiInputBase: {
input: {
background: '#dd7711',
padding: 10,
},
},
},
},
})

export default makeStyles(theme => ({
hutber: {
background: '#000',
color: '#fff',
},
}))


function SpacingGrid() {
const classes = useStyles()
return <MuiThemeProvider theme={theme}><Input label="Outlined" variant="outlined" className={classes.hutber} /></MuiThemeProvider>
}

输出:

enter image description here

enter image description here

如您所见,覆盖样式的唯一方法是创建另一个主题 :O 我想知道 styles

最佳答案

覆盖不起作用的原因是因为指定了 className prop 相当于指定 root CSS class for Input ,但您的主题覆盖在 input 上应用于不同元素的 CSS 类(根元素是一个 div,输入元素是该 div 中的 <input> 元素)。

在我下面的示例中,您可以看到两种不同的定位 <input> 的方法。元素。第一种方法使用 nested selector目标.MuiInputBase-input .第二种方法使用 classes prop(而不是 className )并提供覆盖作为 input CSS 类。

import React from "react";
import ReactDOM from "react-dom";

import {
createMuiTheme,
MuiThemeProvider,
makeStyles
} from "@material-ui/core/styles";
import Input from "@material-ui/core/Input";

const theme = createMuiTheme({
overrides: {
MuiInputBase: {
input: {
background: "#dd7711",
padding: 10
}
}
}
});

const useStyles = makeStyles(theme => ({
hutber: {
"& .MuiInputBase-input": {
background: "#000",
color: "#fff"
}
},
alternateApproach: {
background: "#000",
color: "#fff"
}
}));

function App() {
const classes = useStyles();
return (
<MuiThemeProvider theme={theme}>
<Input defaultValue="Without overrides" variant="outlined" />
<br />
<br />
<Input
defaultValue="With overrides"
variant="outlined"
className={classes.hutber}
/>
<br />
<br />
<Input
defaultValue="Alternate approach"
variant="outlined"
classes={{ input: classes.alternateApproach }}
/>
</MuiThemeProvider>
);
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

Edit override input styling from theme

关于javascript - material-ui 用 useStyles/jss 覆盖主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59454378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com