css - 在 Material UI 中为 Tab 指示器设置边框
问题描述
我做了一个简单的NavBar
,我用以下方式覆盖了标签指示器:
indicator: {
background: 'linear-gradient(45deg, #FE6B8B 30%, #FF8E53 90%)',
},
<Tabs classes={{indicator: classes.indicator}} onChange={handleClickTab} value={value}>
{...}
</Tabs>
我的主要问题是,我希望指示器是像边框一样的正方形(而不是下划线),我可以在其中设置填充和其他相关内容。我怎样才能做到这一点?
解决方案
在Material-UI中,有些元素TabIndicator
是一个span
,而不是border-bottom,所以你需要完全移除它并添加你自己的边框,这样在标签之间切换时移除了过渡效果。此外,您希望边框颜色为渐变色,因此需要做一些工作。
const useStyles = makeStyles({
indicator: {
background: "none" // remove MUI indicator
},
tabs: {
"& button": {
padding: 5 // the size of the border
},
"& button[aria-selected='true']": {
position: "relative",
"&:before": {
content: '""',
position: "absolute",
left: 0,
top: 0,
right: 0,
bottom: 0,
background: "linear-gradient(45deg, #FE6B8B 30%, #FF8E53 90%)", // border color
zIndex: 0
},
"& > *": { zIndex: 0 },
"& > .MuiTab-wrapper": {
background: "#fff",
height: "100%"
}
}
}
});
但是,如果您只想为边框使用单一颜色,则实现起来会容易得多:
const useStyles = makeStyles({
indicator: {
background: "none"
},
tabs: {
"& button[aria-selected='true']": {
border: "3px solid red"
}
}
});
用法
const classes = useStyles();
return (
<Tabs
className={classes.tabs}
classes={{ indicator: classes.indicator }}
{...props}
>
<Tab label="Item One" />
<Tab label="Item Two" />
<Tab label="Item Three" />
</Tabs>
);
现场演示
推荐阅读
- javascript - 如何从多步列表中选择值
- python - Python3 中的 java TreeMap 类比
- c++ - 如何从构造函数的参数推断模板参数“Func”?
- ios - 无法在 XIB 中设置约束 - Xcode 11.3.1
- angular - 使用 where 条件从 Firestore 实时获取数据
- c++ - 子类:*this = function_which_returns_parent_object(),可以吗?
- c# - C# Vlc Forms 音量稳定问题
- python - 在 Python Turtle 中使用循环
- python - 编写与 TensorFlow 1 和 2 兼容的代码的最佳实践
- python-3.x - 有没有办法在py3的开头打印没有空格?