如何在自举的React / Redux应用程序中覆盖自举主题颜色?

时间:2018-08-20 10:24:13

标签: css reactjs sass bootstrap-4

可能是一个新手问题(从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'));

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

@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"

3 个答案:

答案 0 :(得分:5)

首先请参考Bootstrap webpack

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

您正在通过此操作导入Bootstrap CSS的编译版本

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

相反,您应该这样做

在您的 app.scss 文件中,

首先定义您的颜色

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

然后

导入引导的scss版本

@import '~bootstrap/scss/bootstrap';

~意味着webpack将在node_modules中搜索它

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

import './styles/app.scss';

工作原理

在导入引导脚本之前定义颜色变量时, 生成的符合要求的CSS将具有您的颜色值

答案 1 :(得分:3)

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

    @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

答案 2 :(得分:0)

enter image description here最简单的方法...

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