自定义材质UI滑块标签-最后一个

时间:2020-10-01 06:54:11

标签: css reactjs material-ui

在Material-ui中,默认情况下,Slider的标签看起来像是居中放置:

Slider's labels text centered

但是我需要两个标签的位置之间有空格。像这样:

Slider's labels text space-between

我将'&:last-child'属性用于markLabel类。根据文档https://material-ui.com/ru/api/slider/

此代码仅将样式应用于markLabel。但不适用于'&:last-child':

const theme = createMuiTheme({
  overrides: {
    MuiSlider: {
      markLabel: {
        color: "red",
        transform: "none",
        "&:last-child": {
          color: "green",
          transform: "translateX(-100%)"
        }
      },
    }
  }
});

这是SandBox:

https://codesandbox.io/s/material-ui-override-table-padding-on-last-child-forked-bt2lr?fontsize=14&hidenavigation=1&theme=dark

2 个答案:

答案 0 :(得分:0)

我有一个完全相同的问题,
但找不到任何好的解决方案。
我之所以这样使用,是因为我只有两个标签-开始和结束.....

  markLabel:{
    color:'#b3b3b3',
    fontFamily: "'Montserrat', sans-serif",
    fontWeight:700,
    marginTop:6,
    transform:'translateX(-100%)',
    '&[data-index="0"]' : {
      transform:'none'
    },
  },

答案 1 :(得分:0)

聚会晚了,但我使用样式化组件以一种hacky方式解决了这个问题。也许在某些时候对某人有用。我的组件具有动态数量的标记,因此我使用传递给滑块的“max”参数来查找最后一个索引。

const StyledSlider = styled(Slider)`
  *[class*='MuiSlider-markLabel-'][data-index='0'] {
    transform: none;
  }

  *[class*='MuiSlider-markLabel-'][data-index='${({ max }) => max}'] {
    transform: translateX(-100%);
  }
`;