【问题标题】:Customizing styles on Slider Material-UI (React)在 Slider Material-UI (React) 上自定义样式
【发布时间】:2020-09-30 09:25:19
【问题描述】:

我正在尝试使用 Material UI 和 React 制作一个具有受限值的滑块。我已经从文档页面复制了基本实现,它似乎不需要 CSS 来运行。但是当我在我的项目中使用它时,标签会重叠显示为代表所选值的线的颜色(值为 0,线为浅蓝色,值为 5,所有线为深蓝色)。

这是我实现的代码:

const useStyles = makeStyles({


root: {
    width: 300,
  },
  
});

const marks = [
  {
    value: 1,
    label: 'Nada',
  },
  {
    value: 2,
    label: 'Un poco',
  },
  {
    value: 3,
    label: 'Moderado',
  },
  {
    value: 4,
    label: 'Bastante',
  },
  {
      value: 5,
      label: 'Totalmente'
  }
];

function valuetext(value) {
  return `${value}`;
}

function valueLabelFormat(value) {
  return marks.findIndex((mark) => mark.value === value) + 1;
}

export default function DiscreteSlider() {
  const classes = useStyles();

  return (
    <div className={classes.root}>
      <Typography id="discrete-slider-restrict" gutterBottom>
        Restricted values
      </Typography>
      <Slider
        defaultValue={0}
        valueLabelFormat={valueLabelFormat}
        getAriaValueText={valuetext}
        aria-labelledby="discrete-slider-restrict"
        step={null}
        valueLabelDisplay="auto"
        marks={marks}
      />
    </div>
  );
}

滑块看起来像这样:

如何更改重叠并使其正常工作?有没有可以使用的 Slider 道具?

非常感谢!

【问题讨论】:

    标签: javascript reactjs material-ui slider


    【解决方案1】:

    Slidermax 设置为5 - 目前默认为100(有关默认值,请参见docs)。目前,您的标记值是 1 到 5,因此它们被挤压在那个小区域内

    <Slider
      max={5}  // <-- set max
      defaultValue={0}
      valueLabelFormat={valueLabelFormat}
      getAriaValueText={valuetext}
      aria-labelledby="discrete-slider-restrict"
      step={null}
      valueLabelDisplay="auto"
      marks={marks}
    />
    

    并分配更多width 来容纳标签

    const useStyles = makeStyles({
      root: {
        width: 600
      }
    });
    

    【讨论】:

    • !关于宽度,这是用于移动设备的,所以我不能增加它。是否有任何道具来决定标签之间的空间或它们的显示方式?
    • 可能不会。您可以仔细检查文档:material-ui.com/api/slider。我的建议是您将marks 存储在一个状态中-当窗口遇到某些断点时设置新的标记标签。一旦你这样做了,你可能希望width 也能响应,所以我建议你分配响应度量,例如%vw
    • 好的!谢谢!!如果它为某人服务,我将使用带有默认数据索引的 css 来标记左边距: span[data-index ="0"] { left: 3%!important;字体大小:10px; }
    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 2020-09-15
    • 2021-10-24
    相关资源
    最近更新 更多