Ste*_*n G 7 html javascript css reactjs material-ui
我可以Slider使用以下方法修改样式withStyles:
const CustomSlider = withStyles(theme => ({
disabled: {
color: theme.palette.primary.main
},
thumb: {
height: 24,
width: 24,
},
}))(Slider);
Run Code Online (Sandbox Code Playgroud)
但拇指的height和仅当组件为 时才适用。widthdisabled={false}
有没有一种简单的方法来更改滑块height和width打开disabled={true}?
演示: https://codesandbox.io/s/slide-thumb-size-gxb4g?file =/demo.js
样式被 className 覆盖Mui-disabled
您可以看到颜色会保留。
MuiSlider-thumb覆盖or的样式Mui-disabled
一种选择:使用 MUI className嵌套选择器
"& .MuiSlider-thumb": {
height: 24,
width: 24
}
Run Code Online (Sandbox Code Playgroud)
注意withStyles属性指的是 CSS API,您可以使用 className + style hooks 来自定义 CSS API 不公开的 className
完整代码:
import React from "react";
import Slider from "@material-ui/core/Slider";
import Paper from "@material-ui/core/Paper";
import { withStyles, makeStyles } from "@material-ui/core/styles";
const useStyles = makeStyles(theme => ({
margin: {
margin: theme.spacing(10),
"& .MuiSlider-thumb": {
height: 24,
width: 24
}
}
}));
const CustomSlider = withStyles(theme => ({
disabled: {
color: theme.palette.primary.main
},
thumb: {
// color: "red"
}
}))(Slider);
export default function MyCustomSlider() {
const classes = useStyles();
return (
<div>
<Paper className={classes.margin}>
<CustomSlider
defaultValue={[10, 15]}
min={0}
max={20}
valueLabelDisplay="on"
disabled={true}
/>{" "}
<CustomSlider
defaultValue={[5, 7]}
min={0}
max={20}
valueLabelDisplay="on"
disabled={false}
/>{" "}
</Paper>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
对于 withStyles
const styles = theme =>
createStyles({
margin: {
margin: theme.spacing(10)
},
thumb: {
"& .MuiSlider-thumb": {
height: 24,
width: 24
}
}
});
function MyCustomSlider(props) {
// const classes = useStyles();
return (
<div>
<Paper className={props.classes.margin}>
<Slider
defaultValue={[10, 15]}
min={0}
max={20}
valueLabelDisplay="on"
disabled={true}
className={props.classes.thumb}
/>{" "}
<Slider
defaultValue={[5, 7]}
min={0}
max={20}
valueLabelDisplay="on"
disabled={false}
/>{" "}
</Paper>
</div>
);
}
export default withStyles(styles)(MyCustomSlider);
Run Code Online (Sandbox Code Playgroud)