在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 相关文章推荐
Javascript this指针
Jul 30 Javascript
JavaScript 异步调用框架 (Part 1 - 问题 &amp; 场景)
Aug 03 Javascript
javascript中将Object转换为String函数代码 (json str)
Apr 29 Javascript
jquery 单引号和双引号的区别及使用注意
Jul 31 Javascript
js实现在字符串中提取数字
Nov 05 Javascript
解决jquery版本冲突的有效方法
Sep 02 Javascript
js动态切换图片的方法
Jan 20 Javascript
asp.net中oracle 存储过程(图文)
Aug 12 Javascript
JS+CSS实现精美的二级导航效果代码
Sep 17 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
Sep 04 Javascript
原生JS改变透明度实现轮播效果
Mar 24 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
Dec 12 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数据备份
2014/05/19 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
Angular请求防抖处理第一次请求失效问题
2019/05/17 Javascript
Fetch超时设置与终止请求详解
2019/05/18 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
ES6 let和const定义变量与常量的应用实例分析
2019/06/27 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
使用tensorflow实现线性回归
2018/09/08 Python
对Python模块导入时全局变量__all__的作用详解
2019/01/11 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
报社实习生自荐信
2014/01/24 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
求职意向书范本
2015/05/11 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
vue的项目如何打包上线
2022/04/13 Vue.js
vue动态绑定style样式
2022/04/20 Vue.js