如何使用 JSS 设置 Material-UI 菜单弹出框的样式?

Posted

技术标签:

【中文标题】如何使用 JSS 设置 Material-UI 菜单弹出框的样式?【英文标题】:How do I style the Material-UI Menu Popover with JSS? 【发布时间】:2019-03-16 02:06:24 【问题描述】:

我这里有一个代码沙箱:https://codesandbox.io/s/0qv1jwlmlv

我正在做的事情非常简单:

class SimpleMenu extends React.Component 
  state = 
    anchorEl: null
  ;

  handleClick = event => 
    this.setState( anchorEl: event.currentTarget );
  ;

  handleClose = () => 
    this.setState( anchorEl: null );
  ;

  render() 
    const  anchorEl  = this.state;
    const  classes  = this.props;
    return (
      <AppBar className=classes.root>
        <Toolbar>
          <Button
            variant="contained"
            color="secondary"
            aria-owns=anchorEl ? "simple-menu" : null
            aria-haspopup="true"
            onClick=this.handleClick
          >
            Open Menu
          </Button>
          <Menu
            id="simple-menu"
            anchorEl=anchorEl
            open=Boolean(anchorEl)
            onClose=this.handleClose
            PopoverClasses=
              paper: classes.menu
            
          >
            <MenuItem onClick=this.handleClose>Profile</MenuItem>
            <MenuItem onClick=this.handleClose>My account</MenuItem>
            <MenuItem onClick=this.handleClose>Logout</MenuItem>
          </Menu>
        </Toolbar>
      </AppBar>
    );
  


const styles = 
  root: 
    height: 100
  ,
  menu: 
    position: "relative",
    top: 100
  
;
export default withStyles(styles)(SimpleMenu);

这里,我的导航栏是固定高度的,当你按下菜单按钮时,我希望菜单按钮在导航栏下方打开。

为此 - 我已向菜单弹出框添加了相关样式,并将此样式应用于弹出框纸张 - 但材料应用于弹出框的内联样式接管并且不起作用。

我该如何设计这个样式?

【问题讨论】:

啊,好的,我在示例中看到了使用Grow 组件的演示。我现在将继续发布答案。 这是一个工作示例:codesandbox.io/s/0xx1zp57np,但老实说,我 cbf 现在正在写下解决方案的完整答案。这是相当复杂的imo。 如果有人感兴趣,这里是我写的一篇关于我创建的抽象菜单按钮组件的帖子codereview.stackexchange.com/questions/205359/… 【参考方案1】:

反正一年过去了。以这种方式使用 PaperProps 添加样式。

这里是link

PaperProps=
 style: 
  marginTop: "40px"
 

【讨论】:

以上是关于如何使用 JSS 设置 Material-UI 菜单弹出框的样式?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用类名将常规 JSS 类与 Material-UI 的类覆盖功能结合起来

如何在 MaterialUI 4 中使用 react-jss?

如何使用 cssinjs/jss 在 shadow root 中挂载样式

如何在`JSS`中实现`CSS`嵌套规则?

Material-ui 样式对话框/模态背景

JSS 中的简单选择器和嵌套选择器