在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 相关文章推荐
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
Jun 14 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
Nov 18 Javascript
jQuery 拖动层(在可视区域范围内)
May 24 Javascript
jQuery中outerHeight()方法用法实例
Jan 19 Javascript
js简单判断移动端系统的方法
Feb 25 Javascript
JavaScript中自带的 reduce()方法使用示例详解
Aug 10 Javascript
canvas知识总结
Jan 25 Javascript
荐书|您有一份JavaScript书单待签收
Jul 21 Javascript
layui自定义插件citySelect实现省市区三级联动选择
Jul 26 Javascript
react native 仿微信聊天室实例代码
Sep 17 Javascript
Vue前端判断数据对象是否为空的实例
Sep 02 Javascript
在vue中使用vant TreeSelect分类选择组件操作
Nov 02 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
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
php通过获取头信息判断图片类型的方法
2015/06/26 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
PHP扩展类型及安装方式解析
2020/04/27 PHP
JavaScript调试工具汇总
2014/12/23 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
微信小程序开发教程之增加mixin扩展
2017/08/09 Javascript
Python自动扫雷实现方法
2015/07/25 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
20招让你的Python飞起来!
2016/09/27 Python
《Python学习手册》学习总结
2018/01/17 Python
分分钟入门python语言
2018/03/20 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
django认证系统 Authentication使用详解
2019/07/22 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
联想英国官网:Lenovo英国
2019/07/17 全球购物
大学生自我鉴定评语
2014/01/27 职场文书
初中班级口号
2014/06/09 职场文书
花木兰观后感
2015/06/10 职场文书
律师催款函范文
2015/06/24 职场文书
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers