我正在使用Material-UI
和构建一个表单,并使用makeStyles
并CSS-In-JS
进行样式设置。我有一个来自 Material-UI 库的表单,我正在尝试设置它的样式。我试图弄清楚如何定位来自库的表单元素的类并覆盖样式。
这是Material-UI
我要定位的表单和类(表单的第一个文本输入字段的before
标签):
我想更改文本字段的border-bottom
属性。这是我尝试过的。查看underline
CSS 中的类和表单的第一个文本输入:
const useStyles = makeStyles((theme) => ({
root: {
display: 'flex',
width: '100%',
display: 'flex',
alignItems: 'center'
},
container: {
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
height: '100vh'
},
paper: {
padding: theme.spacing(2),
display: 'flex',
justifyContent: 'center',
color: 'snow',
background: 'salmon'
},
form: {
background: 'salmon',
display: 'flex',
flexDirection: 'column',
justifyContent: 'center',
alignItems: 'flex-start',
height: '50vh',
width: '50%'
},
customInput: {
background: 'black'
},
underline: {
'&:before': {
borderBottom: '10px solid green'
},
},
}));
export default function FormOne() {
const classes = useStyles();
return (
<Grid container className={classes.container}>
<Grid item xs={12} md={6}>
<Paper elevation="5" className={classes.paper}>
<Formik
initialValues={{
email: '',
password: '',
}}
validate={values => {
const errors = {};
if (!values.email) {
errors.email = 'Required';
} else if (
!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(values.email)
) {
errors.email = 'Invalid email address';
}
return errors;
}}
onSubmit={(values, { setSubmitting }) => {
setTimeout(() => {
setSubmitting(false);
alert(JSON.stringify(values, null, 2));
}, 500);
}}
>
{({ submitForm, isSubmitting }) => (
<Form className={classes.form}>
<Field
component={TextField}
name="email"
type="email"
label="Email"
fullWidth="true"
variant="filled"
size="small"
color="primary"
className={classes.underline}
/>
<br />
<Field
component={TextField}
type="password"
label="Password"
name="password"
fullWidth="true"
variant="filled"
size="small"
color="secondary"
/>
<br />
<Field
component={TextField}
type="password"
label="Password"
name="password"
fullWidth="true"
variant="filled"
size="small"
color="primary"
/>
{isSubmitting && <LinearProgress />}
<br />
<Button
variant="contained"
color="primary"
disabled={isSubmitting}
onClick={submitForm}
className={classes.button}
>
Submit
</Button>
</Form>
)}
</Formik>
</Paper>
</Grid>
</Grid>
);
}
通常,当我使用这种方法进行样式设置时,如果我包含const classes = useStyles();
在我的函数中,我可以在元素上使用className={classes.nameOfClass}
,然后以该元素为目标,makeStyles
我可以设置元素的样式。这非常适用于我正在设计的自定义元素,但不适用于覆盖Material-UI
库类。
如何定位和.MuiFilledInput-underline:before
自makeStyles
定义样式?