【问题标题】:How to change the color of Menu in material-ui如何在material-ui中更改Menu的颜色
【发布时间】:2020-07-16 07:49:33
【问题描述】:

我正在使用来自material-ui 的菜单并想更改背景颜色。问题是,当我给菜单颜色时,它会在菜单弹出器出现时改变整个页面背景。当我对菜单项应用颜色时,它会在顶部和底部留下一些灰色阴影,因为所有这些菜单项都包含在一个 div 中。 问题沙盒:https://codesandbox.io/s/material-ui-dropdown-background-color-g88e1

更改菜单背景颜色的正确方法是什么?

我尝试createMuiTheme 更改此设置,但它更改了我的应用程序中所有菜单的颜色。我想将此样式仅应用于其中一个菜单项。所以寻找解决方案来使用makeStyle

【问题讨论】:

    标签: javascript html css reactjs material-ui


    【解决方案1】:

    有多种方法

    1.Material-UI Menu CSS API

    我们有名为 paper

    的 API

    全局类:.MuiMenu-paper
    说明:应用于 Paper 组件的样式。

    <Menu
      ...
      classes={{ paper: classes.menuPaper }}
    >
    
    export const useStyles = makeStyles((theme: Theme) => ({
      menuPaper: {
        backgroundColor: "lightblue"
      }
    }));
    

    2.使用Material-UI nesting selector直接选择MuiPaper-root

    在没有暴露相关 CSS API 的某些情况下的可选方式。

    <Menu
      ...
      className={classes.menu}
    >
    
    export const useStyles = makeStyles((theme: Theme) => ({
      menu: {
        "& .MuiPaper-root": {
          backgroundColor: "lightblue"
        }
      }
    }));
    


    你可以检查 DOM 结构来找出你应该使用哪个元素的 className

    <div
      class="MuiPaper-root MuiMenu-paper MuiPopover-paper MuiPaper-elevation8 MuiPaper-rounded"
      tabindex="-1"
      style="opacity: 1; transform: none; transition: opacity 251ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 167ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; top: 16px; left: 16px; transform-origin: -8px 10px;"
    >
      <ul>
        <li />
        <li />
        <li />
      </ul>
    </div>;
    

    这里MuiPaper-root 似乎是第一个。所以使用它就可以了。

    【讨论】:

    猜你喜欢
    • 2020-09-03
    • 1970-01-01
    • 2020-12-26
    • 2022-11-10
    • 2021-12-07
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多