可能是一个新手问题(从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"
答案 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。
答案 2 :(得分:0)