在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 获取URL参数的插件
Mar 04 Javascript
Jquery动态改变图片IMG的src地址示例
Jun 25 Javascript
setInterval与clearInterval的使用示例代码
Jan 28 Javascript
Javascript加载速度慢的解决方案
Mar 11 Javascript
jQuery获取上传文件的名称的正则表达式
May 21 Javascript
js类式继承与原型式继承详解
Apr 07 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
Apr 26 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
Dec 29 Javascript
js for循环倒序输出数组元素的实例
Mar 01 Javascript
浅谈mvvm-simple双向绑定简单实现
Apr 18 Javascript
浅析Vue 和微信小程序的区别、比较
Aug 03 Javascript
微信小程序视频弹幕发送功能的实现
Dec 28 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+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
javascript引导程序
2008/10/26 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
通过正则格式化url查询字符串实现代码
2012/12/28 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python概率计算器实例分析
2015/03/25 Python
在Linux下调试Python代码的各种方法
2015/04/17 Python
Python读取网页内容的方法
2015/07/30 Python
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
python3设计模式之简单工厂模式
2017/10/17 Python
pygame实现简易飞机大战
2018/09/11 Python
详解Python 解压缩文件
2019/04/09 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
英国香水店:The Perfume Shop
2017/03/27 全球购物
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
珍珠奶茶店创业计划书
2014/01/11 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
机关干部四风问题自我剖析及整改措施
2014/10/26 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
详解Python为什么不用设计模式
2021/06/24 Python
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫
golang操作rocketmq的示例代码
2022/04/06 Golang