在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里filter()函数与find()函数用法分析
Jun 24 Javascript
详细分析JavaScript函数定义
Jul 16 Javascript
angularjs学习笔记之双向数据绑定
Sep 26 Javascript
AngularJS 实现按需异步加载实例代码
Oct 18 Javascript
JavaScript修改作用域外变量的方法
Mar 25 Javascript
javascript弹出带文字信息的提示框效果
Jul 19 Javascript
angularJS Provider、factory、service详解及实例代码
Sep 21 Javascript
JavaScript笛卡尔积超简单实现算法示例
Jul 30 Javascript
Puppeteer 爬取动态生成的网页实战
Nov 14 Javascript
JS实现公告上线滚动效果
Jan 10 Javascript
js加减乘除精确运算方法实例代码
Jan 17 Javascript
Vue基本指令实例图文讲解
Feb 25 Vue.js
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为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
33道php常见面试题及答案
2015/07/06 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
2015/05/19 Javascript
window.location.reload 刷新使用分析(去对话框)
2015/11/11 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
2016/01/26 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
Python守护进程用法实例分析
2015/06/04 Python
你应该知道的python列表去重方法
2017/01/17 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
python实现三次样条插值
2018/12/17 Python
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
高中生校园生活自我评价
2013/09/19 职场文书
大学生入党思想汇报
2014/01/01 职场文书
宠物店的创业计划书范文
2014/01/11 职场文书
小学班级特色活动方案
2014/08/31 职场文书
生产操作工岗位职责
2014/09/16 职场文书
预备党员群众意见
2015/06/01 职场文书
党小组鉴定意见
2015/06/02 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
vue中使用mockjs配置和使用方式
2022/04/06 Vue.js
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python