javascript - 禁用时如何更改material-ui slider 拇指样式

标签 javascript html css reactjs material-ui

我可以修改 Slider样式使用 withStyles :

const CustomSlider = withStyles(theme => ({
  disabled: {
    color: theme.palette.primary.main
  },
  thumb: {
    height: 24,
    width: 24,
  },
}))(Slider);

但是 heightwidth仅当组件为 disabled={false} 时才应用拇指的.

有没有简单的方法来改变 slider heightwidthdisabled={true} ?

演示:
https://codesandbox.io/s/slide-thumb-size-gxb4g?file=/demo.js

最佳答案

原因

样式被 className Mui-disabled 覆盖

你可以看到颜色会保持。

enter image description here

如何解决

覆盖 MuiSlider-thumb 的样式或 Mui-disabled
一种选择:使用 MUI 类名 nesting selector

"& .MuiSlider-thumb": {
  height: 24,
  width: 24
}

通知 withStyles attributes 引用 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>
  );
}

enter image description here

更新

对于 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);

Edit Slide thumb size

关于javascript - 禁用时如何更改material-ui slider 拇指样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61206613/

相关文章:

html - 如何修复 Bootstrap slider 上的弹出位置?

html - 如何在下面的演示右侧添加图像?

javascript - React.js组件与html5媒体当前时间同步

javascript - 将表单复制到剪贴板并设置格式

html - 图像看起来比输入高

javascript - 在 href 属性中插入 javascript 变量

javascript - 如何正确地将数据从 jQuery 和 Ajax 附加到 HTML?

javascript - 我如何构建百分比 glyphicon 星形图标来填充十进制平均评分?

javascript - 当页面加载时,图像加载的可见性值是否设置为隐藏?

html - BEM元素嵌套命名和sass规则