首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重用所有css文件中的变量--使用postcss-cssnext,特别是postcss--带有css模块的自定义属性。

重用所有css文件中的变量--使用postcss-cssnext,特别是postcss--带有css模块的自定义属性。
EN

Stack Overflow用户
提问于 2016-10-26 15:59:51
回答 2查看 1K关注 0票数 0

我使用css-模块以及postcss-cssnext,特别是它的postcss自定义属性特性。

我还使用了react boilerplate (https://github.com/mxstbr/react-boilerplate/),这个非常好的样板附带了这些模块。

我的文件夹结构是:

代码语言:javascript
复制
Main folder
    app
        containers
            App
                styles.css
                index.js
            HomePage
                styles.css
                index.js

        components
            Component1
                styles.css
                index.js
            Component2
                styles.css
                index.js

App/styes.css

代码语言:javascript
复制
:root {
    --varA: #1eb3ab;
    --varB: #1eb3ab;
    --varC: #1eb3ab;
    --varD: #1eb3ab;
    --varE: #1eb3ab;

}

body {
    color: var(--varA)  /*works fine */
}

我想将这些var应用到App/styes.css中(或者我很乐意在其他地方定义它们,在这种情况下如何实现),在其他容器中--组件

我已经尝试过(用于css-模块)

主页/index.js

代码语言:javascript
复制
..
..

<div className={styles.myClass}> Content </div>

..

首页/风格.方法1

代码语言:javascript
复制
:root{
  --varA: tealish from "containers/App/styles.css";     /* DOESNT WORK */
}

.myClass {
    color: var(--varA)
}

首页/风格.方法2

代码语言:javascript
复制
.myClass {
    color: var(--varA from "containers/App/styles.css")     /* DOESNT WORK  AS WELL*/
}

最优雅的解决方案是什么?我希望将所有变量放在一个文件/一个位置中,并在所有css文件中很好地使用它们。

我还在postcss自定义属性variables中看到了https://github.com/postcss/postcss-custom-properties#variables。但是,我不知道如何在webpack的定义中使用postcss-cssnext。

webpack.dev.babe.js -如何在这里放置变量选项

代码语言:javascript
复制
// Process the CSS with PostCSS
  postcssPlugins: [
    postcssFocus(), // Add a :focus to every :hover
    cssnext({ // Allow future CSS features to be used, also auto-prefixes the CSS...
      browsers: ['last 5 versions', 'IE > 8'], // ...based on this browser list

      // I think I need to add some line here, but not sure what


    }),
    postcssReporter({ // Posts messages from plugins to the terminal
      clearMessages: true,
    }),
    postcssAnimation(),
  ],
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-26 19:35:04

我推荐postcss-自定义属性“变量”选项。

文档中有一个示例

http://cssnext.io/usage/#features

代码语言:javascript
复制
cssnext({
  features: {
    customProperties: {
      variables: {
        mainColor: "red",
        altColor: "blue",
      }
    }
  }
})
票数 1
EN

Stack Overflow用户

发布于 2016-10-27 07:18:18

我通常在postcss-进口的帮助下实现这一点,因此每个需要使用“变量”的模块都需要导入部分。

代码语言:javascript
复制
@import 'path/to/variables';

.myClass {
  color: var(--colorGray);
}

该方法适用于自定义属性,但也适用于自定义属性集

类似的问题

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

https://stackoverflow.com/questions/40267003

复制
相关文章

相似问题

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