物料UI全局css变量

oalqel3c  于 2022-12-24  发布在  其他
关注(0)|答案(4)|浏览(127)

我想声明一些css变量,以便在我的组件中重用。这是你在普通css中的做法:

:root {
  --box-shadow: 0 2px 5px -1px rgba(0, 0, 0, 0.3);
}

然后将按如下方式使用:

.my-class {
  box-shadow: var(--box-shadow);
}

我怎样才能用useStyles达到同样的效果呢?我尝试了以下方法,但没有效果:

const theme = createMuiTheme({
  shadowing: {
    boxShadow: "0 2px 5px -1px rgba(0, 0, 0, 0.3)",
  }
});

我的主应用程序包含在

<ThemeProvider theme={theme}>
  <App />
</ThemeProvider>

我试着在我的组件中使用它:

const useStyles = makeStyles(theme => ({
  workImage: {
    boxShadow: theme.shadowing,
  },
}));

但它不起作用。

92dk7w1h

92dk7w1h1#

在我的例子中,我必须同时使用createMuiTheme和自定义变量。
首先,我用createMuiTheme创建了一个主题

const theme = createMuiTheme({
  typography: {
    fontFamily: "verdana",
  },
});

然后我创建了一个单独的对象,在其中添加变量:

const cssVariables = {
  shadowing: {
     boxShadow: "0 2px 5px -1px rgba(0, 0, 0, 0.3)",
  }
};

然后将这两个对象传递给ThemeProvider:

<ThemeProvider theme={{ ...theme, ...cssVariables }}>

最后,要访问变量:

const useStyles = makeStyles(theme => ({
  workImage: {
    boxShadow: theme.shadowing.boxShadow,
  },
}));
9o685dep

9o685dep2#

“createMuiTheme”函数接受具有有限键集的对象。(调色板、排版、间距等)
你可以只使用普通物体。

const theme = {
  shadowing: {
     boxShadow: "0 2px 5px -1px rgba(0, 0, 0, 0.3)",
  }
};
50pmv0ei

50pmv0ei3#

我通过声明一个值为的js const并将其赋给CSS属性来实现这一点:

const color = "red";

    const useStyles = makeStyles((theme) =>
        createStyles({
            root: {
            color: color
            }
}));
x4shl7ld

x4shl7ld4#

材质UI(v5.6.0)现在支持CSS变量作为一个 * 实验性 * 特性(docs)。

相关问题