如何在CSS模块中使用全局变量?

8 reactjs webpack css-modules

我正在忙着用CSS-Modules学习React,我不太明白如何存储变量?例如,在Sass中你可以这样做:

// _variables.scss
$primary-color: #f1f1f1; 

// heading.scss
@import './variables';
.heading {
  color: $primary-color
}
Run Code Online (Sandbox Code Playgroud)

你如何在CSS模块中实现这一目标?

Man*_*tas 25

看一下这个

//vars.css
:root {
  --color-black: #222;
}


//myComponent.module.css
@import './vars.css';

.component{
  color: var(--color-black);
}
Run Code Online (Sandbox Code Playgroud)


lch*_*bon 10

CSS-Modules文档在这里提到变量:https: //github.com/css-modules/css-modules/blob/master/docs/values-variables.md

有了这个,您可以导入变量:

@value colors: "../../main/colors.css";
@value primary, secondary, tertiary from colors;
Run Code Online (Sandbox Code Playgroud)

可以在你的CSS中使用:

.main {
    background-color: tertiary;
    border-top: 30px solid primary;
}
Run Code Online (Sandbox Code Playgroud)

要使这项工作postcss-loader,postcss-modules-values需要添加到您的webpack配置.见下文:

        {
            test: /\.css$/,
            use: [{
                    loader: 'style-loader'
                },
                {
                    loader: 'css-loader',
                    options: {
                        modules: true,
                        localIdentName: '[name]_[local]_[hash:base64:5]'
                    }
                },
                {
                    loader: 'postcss-loader',
                    options: {
                        plugins: [postcssModulesValues]
                    }
                }
            ]
        }
Run Code Online (Sandbox Code Playgroud)


fra*_*nky 7

一种方法可能是使用依赖项。例如,

// variables.css
.primaryColor {
  color: #f1f1f1
}

// heading.css
.heading {
  composes: primaryColor from "./variables.css"
}
Run Code Online (Sandbox Code Playgroud)

在此处查看更多详细信息:https : //github.com/css-modules/css-modules#dependencies

如果您使用 webpack,这里有更多示例:https : //github.com/webpack/css-loader#composing-css-classes

此外,如果您使用 webpack,您仍然可以将 Sass 与 CSS 模块一起使用。

  • 组合 !== 变量。 (2认同)
  • 虽然这适用于这个例子,但这个答案不是“如何在 css 模块中使用全局值”这个问题的答案,哈哈。例如,如果我想将这种颜色用于背景颜色和颜色怎么办? (2认同)