如何在引导反应/redux 应用程序中覆盖引导主题颜色?

Posted

技术标签:

【中文标题】如何在引导反应/redux 应用程序中覆盖引导主题颜色?【英文标题】:How to override Bootstrap theme colors in bootstrapped react/redux app? 【发布时间】:2019-01-26 11:08:10 【问题描述】:

可能是一个新手问题(从 REACT 开始),但我无法在我新启动的 react 应用程序中更改主题颜色。

我阅读了一些答案,但不幸的是,它们对我不起作用。

我有以下入口点:

import React from 'react';
import ReactDOM from 'react-dom';
import  App  from './components/App';
import 'bootstrap/dist/css/bootstrap.min.css';
import 'bootstrap';
import './styles/app.scss';

ReactDOM.render(<App />, document.getElementById('app'));

我在src/styles 中有app.scss 样式表:

@import '_settings.scss';
@import '_base.scss';
@import './components/_header.scss';

我尝试在此处更改主题颜色,但似乎没有任何作用:

@import "node_modules/bootstrap/scss/bootstrap";

$theme-colors: (
  "primary": #991196,
  "danger": #ff4136
);

有人可以向我指出这是如何工作的,因为我遇到的所有答案和教程似乎都在使用不同的方法。

我正在使用以下版本的 Bootstrap:

"bootstrap": "^4.0.0"

【问题讨论】:

【参考方案1】:

首先参考这个,Bootstrap webpack

这是在 reactjs 项目中使用引导程序的一种方式。

您正在通过这样做导入引导 css 的编译版本

import 'bootstrap/dist/css/bootstrap.min.css'; //Dont do this

你应该这样做

在您的 app.scss 文件中,

首先定义你的颜色

$primary: #13C7CD;
$danger: #red;

然后

导入scss版本的bootstrap

@import '~bootstrap/scss/bootstrap';

~ 表示 webpack 将在 node_modules 中搜索它

在此之后将 app.scss 文件导入您的主 js 文件(可以是 index.js 或 app.js)

import './styles/app.scss';

这是如何工作的

在导入 bootstrap scss 之前定义颜色变量时, 生成的编译 css 将具有您的颜色值

【讨论】:

感谢您的解释。我的错误是在重新定义颜色之前导入 Bootstrap。但是你的解释很有道理,所以我会这样使用它。【参考方案2】:

您可以完全在 app.scss 文件中进行覆盖和导入 Bootstrap。在主题颜色更改以覆盖 bootstrap _variables.scss 中定义的 !default 主题颜色之后, 导入 Bootstrap 很重要。

    @import '_settings.scss';
    @import '_base.scss';
    @import './components/_header.scss';

    /* import only the Bootstrap files needed for customizations */
    @import "node_modules/bootstrap/scss/functions";
    @import "node_modules/bootstrap/scss/variables";

    /* make the customizations */
    $theme-colors: (
      "primary": #991196,
      "danger": #ff4136
    );

    /* import bootstrap to set changes */
    @import "node_modules/bootstrap/scss";

构建 react 应用并编译 SASS 后,生成的 CSS 将包含您的自定义项和 Bootstrap,因此您无需在 react 中单独导入 bootstrap。

演示:https://www.codeply.com/go/Tho2TEwoI1

【讨论】:

【参考方案3】:

最简单的方法...

只需在 BOOTSTRAP 样式之前导入/定义您的样式。而已! '快乐的黑客'

【讨论】:

以上是关于如何在引导反应/redux 应用程序中覆盖引导主题颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改引导程序原色?

如何更改引导程序版本 4 按钮颜色

为啥 wordpress 会覆盖引导程序?

如何从 react.js 中的 redux 存储向引导表插入数据?

如何在反应引导程序中使用单选按钮

外部样式表不会覆盖引导程序