首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用createMuiTheme覆盖div、p、body上的默认样式

使用createMuiTheme覆盖div、p、body上的默认样式
EN

Stack Overflow用户
提问于 2019-06-05 01:14:18
回答 1查看 3K关注 0票数 1

这可能是一个简单的UI主题定制问题。

我想要做的是覆盖<body>上的默认样式(以及将来的其他常见标签)。现在在我的React树的根上:

代码语言:javascript
复制
import theme from './mui-theme'


ReactDOM.render(
  <Router>
    <ThemeProvider theme={theme}>
      <StylesProvider injectFirst>
        {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */}
        <CssBaseline />
        <App />
      </StylesProvider>
    </ThemeProvider>
  </Router>,
  document.getElementById('root'),
);

有一个主题指定了一些东西,但遗漏了'body1'

const theme = useTheme()console.log(theme)表明它被定义为:

代码语言:javascript
复制
typography:
  body1:
    fontFamily: "Roboto,"Helvetica Neue""
    fontSize: "1rem"
    fontWeight: 400
    lineHeight: 1.5

这就是我想要的设置。但是,要使用该设置,我必须对variant='body1'使用Typography标记。否则,div中的文本具有由CssBaseline提供的样式。这就是我希望覆盖的body标记:font-size: .875rem;上的规则。

人们会通过使用createMuiTheme来覆盖CssBaseline提供的样式吗?如果是这样的话,我补充道:

代码语言:javascript
复制
body: {
    fontSize: '1rem',
  },

它显示在console.log(theme)上,但是如何告诉<body>标记实际使用这种样式呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-05 03:38:52

下面是一个覆盖CssBaseline这一方面的示例

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

const styles = theme => ({
  "@global": {
    body: {
      ...theme.typography.body1
    }
  }
});

function MyCssBaseline() {
  return null;
}

MyCssBaseline.propTypes = {
  classes: PropTypes.object.isRequired
};

export default withStyles(styles)(MyCssBaseline);
代码语言:javascript
复制
import React from "react";
import ReactDOM from "react-dom";
import CssBaseline from "@material-ui/core/CssBaseline";
import MyCssBaseline from "./MyCssBaseline";

function App() {
  return (
    <>
      <CssBaseline />
      <MyCssBaseline />
      <span>
        Here is some text in the body that is getting the body1 styling due to
        MyCssBaseline.
      </span>
    </>
  );
}
ReactDOM.render(<App />, document.querySelector("#root"));

参考:https://material-ui.com/styles/advanced/#global-css

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

https://stackoverflow.com/questions/56448538

复制
相关文章

相似问题

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