如何同时使用css-modules和bootstrap?

问题描述 投票:0回答:5

我在我的项目中使用 electro-react-boilerplate,并且该样板使用 css-modules 来实现样式目的。 我在同一位置使用引导程序和自定义样式时遇到问题。 假设我有一个类似的代码片段,

<div className="container">
  <div className="row custom-css">
    // other codes...
</div>

在这种情况下,“row”是一个引导类名,“custom-css”是我自己的样式类名。 请帮我找到这些问题的解决方案,以便我可以一起使用css-modulesbootstrap...

html css twitter-bootstrap reactjs css-modules
5个回答
14
投票

您需要从特定于该组件的模块文件导入 CSS 模块样式,然后通过返回的对象将它们插入到类名中...

我的组件.css

.myCustomClassName {
  color: #fff;
}

MyComponent.js

import styles from './MyComponent.css';

<div className={`row ${styles.myCustomClassName}`} />

当输出为 HTML 时,这会变成类似...

<div class="row MyComponent__myCustomClassName___n1cC4ge}` />

因此,只要您在某个地方加载引导 CSS,就应该同时支持两者


10
投票

谢谢大家,我发现它通过添加

{}
来工作

<div className={`row ${styles.myCustomClassName}`} />

1
投票

我有点被这个问题困扰(关于如何加载 Bootstrap)。 我在我的 webpack 配置文件中创建了这个粗略的编辑。

       {
        test: /(\.bootstrap\.css$|bootstrap-theme.css|bootstrap.css)/,
        use: [
            {
                loader: 'style-loader',
            },
            {
                loader: 'css-loader',
                options: {
                    minimize: true || {/* CSSNano Options */}
                }
            },
        ],
    },
    {
        test: /^((?!\.bootstrap|bootstrap-theme).)*\.css$/,
        use: [
            {
                loader: 'style-loader',
            },
            {
                loader: 'css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]',
            },
            {
                loader: require.resolve('postcss-loader'),
                options: {
                    // Necessary for external CSS imports to work
                    // https://github.com/facebookincubator/create-react-app/issues/2677
                    ident: 'postcss',
                    plugins: () => [
                        require('postcss-flexbugs-fixes'),
                        autoprefixer({
                            browsers: [
                                '>1%',
                                'last 4 versions',
                                'Firefox ESR',
                                'not ie < 9', // React doesn't support IE8 anyway
                            ],
                            flexbox: 'no-2009',
                        }),
                    ],
                },
            }
        ]
    },

其余部分都被alechill完美覆盖


0
投票

您可以使用反引号,例如:

<div className={`row ${style.customCssClassName}`}></div>


0
投票
import styles from "[path of css module]"

<div className="container">
  <div className={`row ${styles.custom-css}}`>
    // other codes...
</div>

有时可能会出现以下情况:Bootstrap 与自定义 css 重叠(例如背景颜色)=> 使用 !重要;

© www.soinside.com 2019 - 2024. All rights reserved.