【问题标题】:Material ui AppBar text color change to white / back functionality材质 ui AppBar 文本颜色更改为白色/返回功能
【发布时间】:2021-06-08 12:53:03
【问题描述】:

Material ui AppBar 如何根据 AppBar 颜色是深色还是浅色将文本颜色更改为白色/黑色 有没有我可以从材料 ui 中使用的功能?我检查了他们的文档,我自己找不到功能 我试过css

<style>
.container {
  background-color: #ff0001;
  padding: 15px;
}

.container p {
  mix-blend-mode: difference;
  color: white
}
</style>



<div class="container">
  <p> asd </p>
</div>

但它不只给出白色/黑色

【问题讨论】:

    标签: reactjs material-ui


    【解决方案1】:

    Material UI 内置支持在明暗模式之间轻松切换。您需要做的就是为这两种模式构建主题对象,用ThemeProvider 包装您的代码,并使用状态(和上下文)在明暗模式之间切换。参考链接:

    1. ThemeProvider
    2. Theme object。在这里,您可以根据自己的方便将palette.type 属性设置为lightdark

    更正:

    Material-UI 使用palette.primary/secondary 中的main 颜色作为输入,以获得理想的对比文本颜色。这适用于所有 MUI 组件(如 AppBar)。确切的源代码在here 中可用,在getContrastText 函数中。他们还在代码中链接了使用 scss 实现相同目的的源。

    我没有完全理解这个实现背后的逻辑,但我希望链接的代码能回答你的问题。

    编辑 2:

    getContrastText 可以通过以下方式与theme 对象一起使用:

    const useStyles = makeStyles(theme => ({
      "key": {
        "color": theme.palette.getContrastText("#cfe8fc") // returns rgba(0,0,0,0.87)
      }
    })
    

    这个theme 对象也可以使用useTheme 钩子或withStyles HOC 获得。

    【讨论】:

    • 这不是我要问的,请尝试运行我提供的代码以更好地理解问题。
    • 我想说的是,如果您将原色设置为深色材质,ui 应用栏文本将自动变为白色,并且虎钳 virsa,我尝试通过 css 实现此功能,但是它接近但不完全像 MUI
    • @ZOthix,我明白你现在的意思了。我已将答案编辑为更合适。
    • 请添加示例代码以获取对比色theme.palette.getContrastText("YourColorHere") ,以便其他人也更容易获得此答案
    猜你喜欢
    • 2020-02-05
    • 1970-01-01
    • 2023-03-23
    • 2022-06-30
    • 2019-09-26
    • 2021-07-03
    • 2021-12-26
    • 1970-01-01
    • 2020-09-28
    相关资源
    最近更新 更多