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

IT技术 css reactjs sass bootstrap-4
2021-05-03 23:32:29

可能是新手问题(从 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个回答

先参考这个,Bootstrap webpack

这是在 reactjs 项目中使用 bootstrap 的一种方式。

您正在通过执行此操作导入已编译的 bootstrap 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

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

import './styles/app.scss';

这是如何工作的

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

您可以进行覆盖并完全在app.scss文件中导入 Bootstrap 重要的是主题颜色更改导入 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 中单独导入引导程序。

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

在此处输入图片说明最简单的方法...

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