我正在尝试更改IconButton
材质组件内部的材质图标的颜色(此操作应触发颜色更改-将鼠标悬停在IconButton
上)。
这怎么办?仅当将鼠标悬停在图标本身上并且不悬停在IconButton
上时,才能直接向图标添加类。
我的代码:
<IconButton className="add-icon-btn" onClick={toggleNominationForm}>
{!showForm ? <AddBoxIcon /> : <IndeterminateCheckBoxIcon /> }
</IconButton>
答案 0 :(得分:3)
这里有一个完整的例子,希望这可以解决您的问题:
import React from 'react'
import { makeStyles } from '@material-ui/styles'
import IconButton from '@material-ui/core/IconButton'
import AddBoxIcon from '@material-ui/icons/AddBox'
import IndeterminateCheckBoxIcon from '@material-ui/icons/IndeterminateCheckBox'
export default () => {
const [showForm, setShowForm] = React.useState(false)
const classes = useClasses()
return (
<IconButton
classes={{
root: classes.iconContainer
}}
>
{!showForm
? <AddBoxIcon className={classes.icon}/>
: <IndeterminateCheckBoxIcon className={classes.icon}/>
}
</IconButton>
)
}
const useClasses = makeStyles(theme => ({
iconContainer: {
"&:hover $icon": {
color: 'red',
}
},
icon: {
color: 'blue',
},
}))
答案 1 :(得分:0)
您可能需要一个hover
状态。因此,您可以对外部图标使用onMouseEnter
和onMouseLeave
,然后对内部图标使用此条件来设置样式。此逻辑是从this answer借用的。因此,我将答案设置为CW。
<IconButton
onMouseEnter={() => {
setHover(true);
}}
onMouseLeave={() => {
setHover(false);
}}
className="add-icon-btn"
onClick={toggleNominationForm}
>
{!showForm ? (
<AddBoxIcon style={{ backgroundColor: hover ? "blue" : "yellow" }} />
) : (
<IndeterminateCheckBoxIcon />
)}
</IconButton>
答案 2 :(得分:0)
尝试添加以下CSS-
.IconButton:hover .Iconclass {
background-color: /*desired color*/;
}