如何从 MUI 图标按钮设置按钮样式
How to style button from MUI icon button
我想知道如何将样式应用于 IconButton
Material UI 的基础 Button
。例如,为了更改关闭图标 hover/focus 颜色,我当前需要更改 :hover
和 :focus
classes。似乎应该有一种更简单的方法来做到这一点,ButtonBase
API 文档实际上为此提供了 class:focusVisible
。但是,我没有尝试成功应用此样式。
const useStyles = makeStyles({
closeButton: {
"&:hover": { backgroundColor: "yellow" },
"&:focus": { backgroundColor: "yellow" }
}
});
const classes = useStyles();
return (
<IconButton classes={{
root: classes.closeButton,
// This gives a warning that "focusVisible" class doesn't exist
// on IconButton (which is true, it comes from ButtonBase).
focusVisible: classes.closeButton
}}
>
<Icon>close</Icon>
</IconButton>
);
我一辈子都想不通这应该如何工作,因为他们的文档没有提到我能找到的任何类似内容。有什么想法吗?
这是文档的相关部分:https://material-ui.com/customization/components/#pseudo-classes
这是一个如何执行此操作的示例:
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import IconButton from "@material-ui/core/IconButton";
import DeleteIcon from "@material-ui/icons/Delete";
const useStyles = makeStyles(theme => ({
customHoverFocus: {
"&:hover, &.Mui-focusVisible": { backgroundColor: "yellow" }
}
}));
export default function IconButtons() {
const classes = useStyles();
return (
<div>
<IconButton aria-label="Delete">
<DeleteIcon />
</IconButton>
<IconButton className={classes.customHoverFocus} aria-label="Delete">
<DeleteIcon />
</IconButton>
</div>
);
}
我的解决方案是当按钮获得焦点时图标会发生变化:
button: {
color: theme.palette.primary.main,
"&:hover": {
"& .MuiSvgIcon-root":{
color: theme.palette.primary.light,
}
},
},
buttonIcon: {
color: theme.palette.common.white,
},
以及组件:
<Button
variant="contained"
className={classes.button}
startIcon={<AddIcon className={classes.buttonIcon} />}
disableRipple
disableElevation
disableFocusRipple
onClick={() => null}
>
Example
</Button>;
要缩小全局范围,您可以 select 按钮内的按钮图标 class。
我想知道如何将样式应用于 IconButton
Material UI 的基础 Button
。例如,为了更改关闭图标 hover/focus 颜色,我当前需要更改 :hover
和 :focus
classes。似乎应该有一种更简单的方法来做到这一点,ButtonBase
API 文档实际上为此提供了 class:focusVisible
。但是,我没有尝试成功应用此样式。
const useStyles = makeStyles({
closeButton: {
"&:hover": { backgroundColor: "yellow" },
"&:focus": { backgroundColor: "yellow" }
}
});
const classes = useStyles();
return (
<IconButton classes={{
root: classes.closeButton,
// This gives a warning that "focusVisible" class doesn't exist
// on IconButton (which is true, it comes from ButtonBase).
focusVisible: classes.closeButton
}}
>
<Icon>close</Icon>
</IconButton>
);
我一辈子都想不通这应该如何工作,因为他们的文档没有提到我能找到的任何类似内容。有什么想法吗?
这是文档的相关部分:https://material-ui.com/customization/components/#pseudo-classes
这是一个如何执行此操作的示例:
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import IconButton from "@material-ui/core/IconButton";
import DeleteIcon from "@material-ui/icons/Delete";
const useStyles = makeStyles(theme => ({
customHoverFocus: {
"&:hover, &.Mui-focusVisible": { backgroundColor: "yellow" }
}
}));
export default function IconButtons() {
const classes = useStyles();
return (
<div>
<IconButton aria-label="Delete">
<DeleteIcon />
</IconButton>
<IconButton className={classes.customHoverFocus} aria-label="Delete">
<DeleteIcon />
</IconButton>
</div>
);
}
我的解决方案是当按钮获得焦点时图标会发生变化:
button: {
color: theme.palette.primary.main,
"&:hover": {
"& .MuiSvgIcon-root":{
color: theme.palette.primary.light,
}
},
},
buttonIcon: {
color: theme.palette.common.white,
},
以及组件:
<Button
variant="contained"
className={classes.button}
startIcon={<AddIcon className={classes.buttonIcon} />}
disableRipple
disableElevation
disableFocusRipple
onClick={() => null}
>
Example
</Button>;
要缩小全局范围,您可以 select 按钮内的按钮图标 class。