如何在悬停时更改图标颜色?

时间:2020-06-16 15:45:37

标签: javascript html css reactjs material-ui

我正在尝试更改IconButton材质组件内部的材质图标的颜色(此操作应触发颜色更改-将鼠标悬停在IconButton上)。

这怎么办?仅当将鼠标悬停在图标本身上并且不悬停在IconButton上时,才能直接向图标添加类。

我的代码:

<IconButton className="add-icon-btn" onClick={toggleNominationForm}>
  {!showForm ? <AddBoxIcon /> : <IndeterminateCheckBoxIcon /> }
</IconButton>

enter image description here

3 个答案:

答案 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状态。因此,您可以对外部图标使用onMouseEnteronMouseLeave,然后对内部图标使用此条件来设置样式。此逻辑是从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*/;
}