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

Kar*_*ren 5 html javascript css reactjs material-ui

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

这怎么可能?仅当鼠标悬停在图标本身而不是IconButton.

我的代码:

<IconButton className="add-icon-btn" onClick={toggleNominationForm}>
  {!showForm ? <AddBoxIcon /> : <IndeterminateCheckBoxIcon /> }
</IconButton>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Cev*_*mic 10

这里有一个完整的示例,我希望这可以解决您的问题:

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',
    },
}))
Run Code Online (Sandbox Code Playgroud)


Maj*_*ati 5

您可以使用以下属性

sx={{ "&:hover": { color: "blue" } }}
Run Code Online (Sandbox Code Playgroud)
<IconButton
              size="large"
              aria-label="show 17 new notifications"
              color="inherit"
              sx={{ "&:hover": { color: "blue" } }}
            >
              <Badge badgeContent={17} color="primary">
                <LayersIcon />
              </Badge>
            </IconButton>

Run Code Online (Sandbox Code Playgroud)