【问题标题】:How to make a drop-down menu appear exactly below the bar in Material-UI?如何使下拉菜单恰好出现在 Material-UI 中的栏下方?
【发布时间】:2020-07-09 16:45:40
【问题描述】:

我使用Material-UI创建了一个下拉菜单,我发现有一点很烦人:我想让我的下拉菜单在我点击它的时候出现在它的下方,但每次它都只是覆盖了它(如下图)

有什么办法可以让下拉菜单出现在栏下方? (不包括Your order标签和号码)

我的代码如下:我尝试修改anchorOrigin属性和transformOrigin属性,但没有成功。

<Menu 
  id="order-menu" 
  anchorEl={anchorEl} 
  keepMounted 
  open={Boolean(anchorEl)}
  onClose={() => setAnchorEl(null)} 
  elevation={20} 
  getContentAnchorEl={null}
  anchorOrigin={{ vertical: "bottom", horizontal: "center", }} 
  transformOrigin={{ vertical: -100, horizontal: 150, }} >        

非常感谢您的帮助!

【问题讨论】:

  • 感谢您的回复!你能告诉我应该在哪里添加这一行吗?

标签: javascript css reactjs material-ui


【解决方案1】:

这是一个将菜单的顶部中心 (transformOrigin) 与按钮的底部中心 (anchorOrigin) 对齐的示例:

import React from "react";
import Button from "@material-ui/core/Button";
import Menu from "@material-ui/core/Menu";
import MuiMenuItem from "@material-ui/core/MenuItem";
import styled from "styled-components";

const MenuItem = styled(MuiMenuItem)`
  justify-content: flex-end;
`;

export default function SimpleMenu() {
  const [anchorEl, setAnchorEl] = React.useState(null);

  const handleClick = event => {
    setAnchorEl(event.currentTarget);
  };

  const handleClose = () => {
    setAnchorEl(null);
  };

  return (
    <div>
      <Button
        aria-controls="simple-menu"
        aria-haspopup="true"
        onClick={handleClick}
      >
        Open Menu
      </Button>
      <Menu
        id="simple-menu"
        anchorEl={anchorEl}
        keepMounted
        open={Boolean(anchorEl)}
        onClose={handleClose}
        getContentAnchorEl={null}
        anchorOrigin={{ vertical: "bottom", horizontal: "center" }}
        transformOrigin={{ horizontal: "center" }}
      >
        <MenuItem onClick={handleClose}>1</MenuItem>
        <MenuItem onClick={handleClose}>2</MenuItem>
        <MenuItem onClick={handleClose}>3</MenuItem>
        <MenuItem onClick={handleClose}>10</MenuItem>
        <MenuItem onClick={handleClose}>20</MenuItem>
        <MenuItem onClick={handleClose}>300</MenuItem>
      </Menu>
    </div>
  );
}

相关文档:https://material-ui.com/api/popover/#props

【讨论】:

  • 感谢 cmets!有没有办法通过使用 styled-components 来摆脱withStyles
  • @YunxiuQiu 当然。我已经更新了我的示例以使用样式组件(尽管该部分与锚位置无关)。
  • 知道了。感谢您的帮助!
猜你喜欢
  • 2018-06-17
  • 2022-11-29
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 2021-01-25
  • 1970-01-01
  • 2022-01-14
相关资源
最近更新 更多