css - 如何在 Create React App 中使用 CSS 模块覆盖 Bootstrap 样式
问题描述
我使用带有嵌入式 CSS 模块的 Create React App,并安装了 Bootstrap 库。有一个示例代码:
index.jsx
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import * as serviceWorker from './serviceWorker';
import 'bootstrap/dist/css/bootstrap.css';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root'),
);
App.jsx
import React from 'react';
import styles from './style.module.css';
const App = () => (
<nav className={`navbar fixed-top ${styles.navbar}`}>test</nav>
);
export default App;
style.module.css
.navbar {
background: #fff;
height: 100px;
padding: 1.5rem 0;
box-shadow: 0 1px 15px rgba(0, 0, 0, .04), 0 1px 6px rgba(0, 0, 0, .04);
}
但结果是 Bootstrap 中的样式删除了我的样式: 错误的样式
我怎样才能改变这种行为?
解决方案
这是由于 React 将样式添加到页面的顺序所致。
App
是 index.js 页面中的子组件,因此将首先应用它的样式。然后,随着 React 向上移动到 index.js 的父级,它会将引导样式应用于页面。由于 bootstrap 样式和您的样式具有相同的特异性,因此 bootstrap 样式将具有优先权。
最简单的解决方案是增加与 Bootstrap 样式冲突的自定义类的特异性。 https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
App
在导入 CSS 模块之前,您还可以在组件中导入 Bootstrap 样式。
推荐阅读
- python - PyQt5 列表小部件。单击 listWidget 上的一个项目,但将另一个项目传递给函数
- javascript - Excel JS 加载项通过 websockets 与 localhost 通信
- apache-spark-sql - 如何替换字符串中首先开始的所有特殊字符
- mysql - ValidationError:“列”在空列上不允许为空
- nativescript - 是否可以在 SideDrawer 导航中使用 TabView 导航
- html - 将 bash 脚本的结果插入到 html 表中
- c++11 - 运行时多态 c++11 和运算符重载
- django - 错误:django admin 用户更改表单用用户名替换电子邮件
- c# - 如何使用 EF Code First 避免外部表中的重复行
- c# - .NET Core 中的 wsHttpBinding 解决方法