Material UI:在父元素悬停时显示子元素

rob*_*mbg 11 reactjs material-ui

当用户将鼠标悬停在Card组件上时,我想在该组件上显示一个否则不可见的按钮。在CSS中,我会做这样的事情:

.card:hover my-button {
  display: block;
}
Run Code Online (Sandbox Code Playgroud)

我如何以“Material-UI”方式复制它?

到目前为止,我发现的所有 Material-UI 提示都建议像这样添加悬停样式,但这会将样式应用于悬停在其上的组件,而不是其他组件。

  '&:hover': {
    background: 'blue'
  }
Run Code Online (Sandbox Code Playgroud)

Dek*_*kel 13

您可以使用 createMuiTheme 对 CSS 执行完全相同的操作:

export const theme = createMuiTheme({
  overrides: {
    // For label
    MuiCard: {
      root: {
        "& .hidden-button": {
          display: "none"
        },
        "&:hover .hidden-button": {
          display: "flex"
        }
      }
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

Button你的里面的Card类名hidden-button,你会得到你想要的同样的东西。

在这里检查:https ://codesandbox.io/s/mui-theme-css-hover-example-n8ou5


Zoh*_*jaz 8

它不是特定于 Material UI 的,而是特定于 React 的东西。您需要一个状态变量来显示/隐藏按钮。

const App = () => {
  const [show, setShow] = useState(false);
  return (
    <Card
      onMouseOver={() => setShow(true)}
      onMouseOut={() => setShow(false)}>
      <CardBody>
        // some content
        {show && <Button>Click</Button>}
      </CardBody>
    </Card>
  );

}
Run Code Online (Sandbox Code Playgroud)

  • 这个例子非常简单,对于一张卡来说效果很好。伙计,假设你有一个卡片列表 - 那么你需要以某种方式保存所有卡片的状态并分别更改每张卡片的状态......这听起来需要更多的工作 (2认同)