首页 > 解决方案 > 根据数据库中的值动态设置背景颜色

问题描述

db 存储十六进制值,然后将用于设置 div 的背景颜色。

如何将来自 DB 的值传递给 css 类?

编号| page_category| 颜色

1 | 美国广播公司 | 38963c

2 | XYZ | 269蜜蜂

JS

pageCategories.map((category, i) => {
 <div className={`pp_color`} />
}

CSS

 .pp_color1 {
    background:???;
  }

标签: javascriptcssreactjs

解决方案


您的解决方案会起作用,但您必须提前了解所有颜色,然后构建所有 css 类以在您的 JS 中引用。

如果您想要一个动态解决方案并且如果您乐于使用CSS 变量,您可以将背景颜色设置为变量,然后使用 Javascript 使用您的十六进制值更改它,就像这样。

CSS

  :root {
      --main-bg-color: brown;
  }

JS

  const dbValues = {
    'main-bg-color': '#00ff00'
  }

  Object.entries(dbValues).map(([key, value]) => {
    document.documentElement.style.setProperty(`--${key}`, value)
  })

只是提醒一下,CSS 变量不受完全支持,但如果有帮助的话,有一个css-vars-ponyfill

最后一点。您还可以动态更改元素范围内的变量,而不会影响全局类。更多信息在这里


推荐阅读