【问题标题】:Use CSS-modules variables in Jacascript在 Javascript 中使用 CSS 模块变量
【发布时间】:2021-05-19 10:13:11
【问题描述】:

我想知道是否有一种方法可以将我在 css-modules 中的颜色变量共享给我的 js (React) 组件?

如果没有,你会怎么做?有两个带有颜色变量的文件吗?

谢谢!

【问题讨论】:

标签: javascript reactjs global-variables css-modules


【解决方案1】:

CSS 没有变量like Sass does 的概念,所以我假设您指的是CSS custom properties,很多人将其称为“CSS 变量”。

这些自定义属性就是这样 - 自定义样式属性,而不是设置为特定元素,并且可以在运行时由 JS 通过getComputedStyle + getPropertyValue 访问。这是一个例子:

const root = document.documentElement;
const div = document.querySelector('div');
const x = document.getElementById('x');

const get = (elt, key) => getComputedStyle(elt).getPropertyValue(key);

console.log(
  get(root, '--foo'), // 'Foo!'
  get(div, '--bar'), // 'Bar!'
  get(x, '--baz'), // 'Baz!'
  get(x, '--foo'), // 'Foo!' because properties cascade down
)
:root {
  --foo: 'Foo!';
}
div {
  --bar: 'Bar!';
}
#x {
  --baz: 'Baz!';
}
<div></div>
<div id="x"></div>

据我所知,没有官方方法可以以类似于您在 ESM 中所做的方式从 CSS 文件中导出值(例如 export const mainColor = '#ff0000';)。

但 Sass 支持这一点,语法为 as follow,并且需要您使用的 sass 处理器提供适当的支持:

// colors.scss
:export {
  main-color: #ff0000;
}
import colors from './colors.scss';
console.log(colors['main-color']); // '#ff0000'

【讨论】:

  • 好的,我在 CSS 模块中使用变量,就像你可以在这里看到 github.com/css-modules/css-modules/blob/master/docs/… 我问的是这些变量/值是否可以在 JS/(react) 中以某种方式使用: )也许我有错误的术语或什么?我一直称它们为变量 :)
猜你喜欢
  • 2017-04-07
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
  • 2018-07-31
  • 2018-02-04
  • 1970-01-01
相关资源
最近更新 更多