在Create React App中使用CSS Modules的方法示例


Posted in Javascript onJanuary 15, 2019

前提条件

请先进行全局安装 create-react-app 插件哈,安装命令:npm install create-react-app -g

先使用 create-react-app 命令下载一个脚手架工程,安装命令:

# 使用 npx
$ npx create-react-app my-app

# 使用 npm 
$ npm init npx create-react-app my-app

# 使用 yarn
$ yarn create react-app my-app

运行项目

$ cd my-app

# 使用 npm
$ npm start

# 或者使用yarn
# yarn start

在浏览器中输入 http://localhost:3000 查看项目效果

使用 CSS Module 的第一种方式

create-react-app 中内置了使用 CSS Modules 的配置,当前方式就是使用 create-react-app 内置的用法

方式

将所有的 .css/.lee/.scss 等样式文件都修改成 .module.css/.module.less/.module.scss 等。即可使用 CSS Modules 的方式进行引入使用了。

用法

编写一个 css 文件:Button.module.css

.error {
  background-color: red;
}

在编写一个普通的 css 文件:another-stylesheet.css

.error {
  color: red;
}

在 js 文件中使用 CSS Modules 的方式进行引用:Button.js

import React, { Component } from 'react';
import styles from './Button.module.css'; // 使用 CSS Modules 的方式引入
import './another-stylesheet.css'; // 普通引入

class Button extends Component {
 render() {
  // reference as a js object
  return <button className={styles.error}>Error Button</button>;
 }
}

在浏览器中查看效果

此时 Button 组件的背景颜色是红色,但是字体颜色却不是红色,因为使用了 Css Modules 之后,普通的 css 样式就不起效果了,需要用全局的方式编写才可以(:global)。 最后添加到元素上的样式结果为: <button class="Button_error_ax7yz">Error Button</button>

使用 CSS Module 的第二种方式

方式

在命令行运行 npm run eject 命令

此命令会将脚手架中隐藏的配置都展示出来,此过程不可逆

运行完成之后,打开 config 目录下的 webpack.config.js 文件,找到 test: cssRegex 这一行

在 use 属性执行的方法中添加 modules: true ,如下图:

在Create React App中使用CSS Modules的方法示例 

用法

和第一种方式的用法一致,只是不需要在 css 文件后面加 .module 后缀了

编写一个 css 文件:Button.css

.error {
  background-color: red;
}

再编写一个普通的 css 文件:another-stylesheet.css

.error {
  color: red;
}

在 js 文件中使用 CSS Modules 的方式进行引用:Button.js

import React, { Component } from 'react';
import styles from './Button.css'; // 可以直接使用 CSS Modules 的方式引入了
import './another-stylesheet.css'; // 普通引入

class Button extends Component {
 render() {
  // reference as a js object
  return <button className={styles.error}>Error Button</button>;
 }
}

在浏览器中查看效果

此时 Button 组件的背景颜色是红色,但是字体颜色却不是红色,因为使用了 Css Modules 之后,普通的 css 样式就不起效果了,需要用全局的方式编写才可以(:global)。 最后添加到元素上的样式结果为: <button class="Button_error_ax7yz">Error Button</button>

如想使用第二种方式对 sass 和 less 也使用 CSS Modules 的方式进行引用,则类似的在 sass 和 less 解析配置上也添加modules: true 即可。

注意

默认 create-react-app 脚手架不能直接使用 sass 和 less 直接编写 css,需要先进行相应配置。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery parent和parents的区别分析
Oct 02 Javascript
利用javascript数组长度循环数组内所有元素
Dec 27 Javascript
用unescape反编码得出汉字示例
Apr 24 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
Jul 30 Javascript
JavaScript中Boolean对象的属性解析
Oct 21 Javascript
jQuery实现鼠标经过事件的延时处理效果
Aug 20 Javascript
漂亮! js实现颜色渐变效果
Aug 12 Javascript
JS实现“隐藏与显示”功能(多种方法)
Nov 24 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
Apr 18 jQuery
webpack 3.X学习之多页面打包的方法
Sep 04 Javascript
记一次webapck4 配置文件无效的解决历程
Sep 19 Javascript
vue实现单一筛选、删除筛选条件
Oct 26 Javascript
Vue 样式绑定的实现方法
Jan 15 #Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
Jan 15 #Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
Jan 15 #Javascript
mock.js实现模拟生成假数据功能示例
Jan 15 #Javascript
详解webpack引入第三方库的方式以及注意事项
Jan 15 #Javascript
JS高阶函数原理与用法实例分析
Jan 15 #Javascript
JS立即执行函数功能与用法分析
Jan 15 #Javascript
You might like
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
jQuery.prop() 使用详解
2015/07/19 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
JS实现div模块的截图并下载功能
2017/10/17 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
[00:35]TI7不朽珍藏III——寒冰飞龙不朽展示
2017/07/15 DOTA
python并发编程之线程实例解析
2017/12/27 Python
python机器人行走步数问题的解决
2018/01/29 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
python如何将图片转换为字符图片
2020/08/19 Python
对python中的for循环和range内置函数详解
2018/04/17 Python
python实现最长公共子序列
2018/05/22 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
优秀驾驶员先进事迹材料
2014/05/04 职场文书
学校教师安全责任书
2014/07/23 职场文书
退学证明范本3篇
2014/10/29 职场文书
2014年租房协议书范本
2014/10/30 职场文书
2015年员工工作总结范文
2015/04/08 职场文书
消防演习感想
2015/08/10 职场文书
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技
MySQL时区造成时差问题
2022/04/13 MySQL