Вкладки Material-UI 'selected' недостаточно конкретны.
Код Песочница здесь:
https://codesandbox.io/s/ypx4qpjvpx
Соответствующие биты:
const styles = theme => ({
root: {
flexGrow: 1,
backgroundColor: theme.palette.background.paper
},
label: {
fontWeight: "normal"
},
selected: {
fontWeight: "bold"
}
});
<Tabs value={value} onChange={this.handleChange}>
<Tab
label="Item One"
classes={{
label: classes.label,
selected: classes.selected
}}
/>
<Tab
label="Item Two"
classes={{
label: classes.label,
selected: classes.selected
}}
/>
<Tab
label="Item Three"
href="#basic-tabs"
classes={{
label: classes.label,
selected: classes.selected
}}
/>
</Tabs>
Здесь я пытаюсь переопределить стиль веса шрифта по умолчанию, но для выбранного я хочу, чтобы он был жирным.
Проблема в том, что они имеют одинаковый уровень специфичности, и метка появляется после выбранной, поэтому она переопределяет ее.
Как бы я выбрал более конкретный / достичь того, что я хочу, не используя! Важный.
1 ответ
Решение
Я думаю, что самый простой способ - это использовать root
класс вместо label
(для Tab
компонент).
Демо: https://codesandbox.io/s/q3pmn9o7m4
(Я добавил цвета, чтобы было легче увидеть изменения.)
<Tab
label="Item One"
classes={{
root: classes.tabRoot,
selected: classes.selected,
}}
/>
const styles = theme => ({
root: {
flexGrow: 1,
backgroundColor: theme.palette.background.paper,
},
tabRoot: {
fontWeight: "normal",
color: "#fff",
},
selected: {
fontWeight: "bold",
color: "#0ff",
}
});
Другой способ: https://codesandbox.io/s/8op0kwxpj
const styles = theme => ({
root: {
flexGrow: 1,
backgroundColor: theme.palette.background.paper,
},
tabRoot: {
fontWeight: "normal",
color: "#fff",
'&$selected': {
fontWeight: "bold",
color: "#0ff",
},
},
selected: {},
});