首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Material-UI颜色属性选项

Material-UI颜色属性选项
EN

Stack Overflow用户
提问于 2021-02-16 04:38:37
回答 2查看 257关注 0票数 1

我目前使用material-ui有以下主题:

代码语言:javascript
复制
import { createMuiTheme } from "@material-ui/core/styles";
import { blue, green } from "@material-ui/core/colors";

const theme = createMuiTheme({
  palette: {
    primary: blue,
    secondary: green,
  },
});

export default theme;

现在,如果我对从material-ui colors导入的green对象执行console.log,我会得到一个如下所示的颜色对象:

代码语言:javascript
复制
green = {
  50: "#e8f5e9"
  100: "#c8e6c9"
  200: "#a5d6a7"
  300: "#81c784"
  400: "#66bb6a"
  500: "#4caf50"
  600: "#43a047"
  700: "#388e3c"
  800: "#2e7d32"
  900: "#1b5e20"
  A100: "#b9f6ca"
  A200: "#69f0ae"
  A400: "#00e676"
  A700: "#00c853"
}

因此,我想我可以像下面这样设计我的AppBar组件:<AppBar color="secondary.800">

然而,这是行不通的。我也尝试过:<AbbBar color="secondary[800]">,但同样不起作用。

我甚至尝试了这个主题的变体:

代码语言:javascript
复制
import { createMuiTheme } from "@material-ui/core/styles";
import { blue, green } from "@material-ui/core/colors";

const theme = createMuiTheme({
  palette: {
    primary: blue,
    secondary: {...green},
  },
});

export default theme;

这也不起作用。

有没有办法让我通过AppBar组件中的color属性访问green颜色对象中的不同颜色变化?

如果是这样的话,是怎么做的?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-16 05:48:47

使用Material UI无法完成您想要做的事情。您只能设置颜色变体(主要或次要),颜色将从您的主题中提取。

要手动设置不同的颜色,您需要覆盖组件的样式。

代码语言:javascript
复制
import { withStyles } from "@material-ui/core/styles";
import { blue } from "@material-ui/core/colors";

const MyChildComponent = ({ classes }) => <AppBar classes= {{ root: classes.root }} />

const styles = () => ({
  root: {
     backgroundColor: blue[400],
  }
});

export default withStyles(styles)(MyChildComponent);

--------

import { withStyles } from "@material-ui/core/styles";
import { green } from "@material-ui/core/colors";

const MyParentComponent = ({ classes }) => <MyChildComponent classes={{ root: classes.someClass}} />

const styles = () => ({
  someClass: {
     backgroundColor: green[400],
  }
});

export default withStyles(styles)(MyParentComponent);

当然,您可以定义一些内部逻辑,以根据您向下传递的一些属性来决定在您的子组件中应用哪个类。

代码语言:javascript
复制
import clsx from "clsx";
import { withStyles } from "@material-ui/core/styles";
import { red, green, blue } from "@material-ui/core/colors";

const MyChildComponent = ({ color, classes }) => <AppBar className={clsx({
   [classes.red]: color === "red",
   [classes.blue]: color === "blue,
   [classes.green]: color === "green",
})}/>

const styles = () => ({
  red: {
     backgroundColor: red[400],
  },
  green: {
     backgroundColor: green[400],
  },
  blue: {
     backgroundColor: blue[400],
  },
});

export default withStyles(styles)(MyChildComponent);

--------

const MyParentComponent = () => <MyChildComponent color="red"/>

export default MyParentComponent;

就我个人而言,我只会手动覆盖上面所示的类。

票数 1
EN

Stack Overflow用户

发布于 2021-02-16 05:02:53

根据Material UI documentation,您可以使用数组表示法访问颜色变化,并定义如下主题

代码语言:javascript
复制
const theme = createMuiTheme({
  palette: {
    primary: {
      main: blue[600]
    },
    secondary: {
      main: green[800]
    }
  }
});

工作代码沙箱链接:https://codesandbox.io/s/material-colors-9hnqh?file=/src/App.js

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66215088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档