在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 相关文章推荐
js中for in的用法示例解析
Dec 25 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
Jun 15 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
Jan 28 Javascript
js获取图片宽高的方法
Nov 25 Javascript
关于axios返回空对象的问题解决
Apr 04 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
Jun 12 Javascript
vue-star评星组件开发实例
Mar 01 Javascript
详解node Async/Await 更好的异步编程解决方案
May 10 Javascript
jQuery实现获取动态添加的标签对象示例
Jun 28 jQuery
Vue中使用vux配置代码详解
Sep 16 Javascript
浅谈vuex actions和mutation的异曲同工
Dec 13 Javascript
vue-router传参用法详解
Jan 19 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检测移动设备类mobile detection使用实例
2014/04/14 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
php服务器的系统详解
2019/10/12 PHP
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
jquery异步请求实例代码
2011/06/21 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
原生js实现图片层叠轮播切换效果
2016/02/02 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
2016/12/15 Javascript
以BootStrap Tab为例写一个前端组件
2017/07/25 Javascript
node跨域请求方法小结
2017/08/25 Javascript
nodejs+mongodb+vue前后台配置ueditor的示例代码
2018/01/02 NodeJs
vue权限管理系统的实现代码
2019/01/17 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
Python列表切片用法示例
2017/04/19 Python
Python中logging实例讲解
2019/01/17 Python
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
什么时候用assert
2015/05/08 面试题
如何安装ruby on rails
2014/02/09 面试题
护士实习自我鉴定
2013/10/22 职场文书
银行员工辞职信范文
2014/01/20 职场文书
公司请假条格式
2014/04/11 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书