问题描述
我尝试使用 css 覆盖 material ui 提供的样式 这是js文件
import TextField from '@material-ui/core/TextField';
import classes from './InputFields.module.css';
export const InputFields = (props) => {
return (
<div className={classes.fields}>
<TextField
id={props.id}
className={classes.field}
label={props.label}
variant="outlined"
type={props.type}
onChange={props.onChange}
value={props.value}
error={props.error}
required
/>
</div>
)
}
export default InputFields
这是css文件
.fields {
margin: 1rem;
}
.field .MuiInputBase-input{
height: 3rem;
border: 5px solid green;
border-radius: 3px;
font-size: large;
}
任何帮助将不胜感激
解决方法
在css中添加重要的关键字
.fields {
margin: 1rem !imporant;
}
将重要的关键字添加到您希望覆盖的 css 中,将覆盖预定义的 css
,我不建议您使用 !important
,至少有必要:
您需要在 css 定义中应用一些更改来定义具有高优先级 (https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity) 的 selector
。在这种情况下,您可以使用 input
类型选择器,它比 class selector
具有更高的优先级:
.fields {
margin: 1rem;
}
.field input { //--> add input selector
height: 3rem;
border: 5px solid green;
border-radius: 3px;
font-size: large;
}
见:https://codesandbox.io/s/material-demo-forked-ko3kl
,您可以使用自定义输入道具创建自定义 TextField 组件。
const useStyles = makeStyles(() =>
createStyles({
root: {
height: "3rem",border: "5px solid green",borderRadius: 3,fontSize: "large"
}
}),);
function MyTextField(props: TextFieldProps) {
const classes = useStyles();
return (
<TextField
variant="outlined"
InputProps={{ classes } as Partial<OutlinedInputProps>}
{...props}
/>
);
}
这是基于 materialui 自定义输入文档 here 上的“RedditTextField”示例。