react中使用普通的css样式表会造成作用域的冲突,css定义的样式的作用域是全局,在Vue 中我们还可以使用scope来定义作用域,但是在react中并没有指令一说,所以只能另辟蹊径了。下面我将简单记录并介绍一下在webpage配置实现css 的模块化。

webpack的配置: 截取一小段

 {
test: /\.css/,use:['style-loader','css-loader?modules$localIdentName=[path][name]-[local]-[hash]']
}

如上所示:

这里讲解一下localIdentName自定义生成的类名格式,可选参数有:

  • [path]表示样式表相对于项目根目录所在的路径
  • [name] 表示样式表文件名称
  • [local] 表示样式表的类名定义名称
  • [hash:length] 表示32位的hash值

注意:只有类名选择器和ID选择器才会被模块化控制,类似body  h2 span 这些标签选择器是不会被模块化控制

使用过程如下:

import cname from '@xxx.css'  => .title{color:red;}
//这里你可以输出测试一下cname的值 console.log(cname)
//react中的部分代码
render(){
  return(
  <div>
    <h2 className={cname.title}>这里是标题<h2>
  </div>
)
}

一句HTml多类名配置如下:

//test 为全局样式 通过加空格实现
<h1 className={[cname.title, 'test'].join(' ')}></h1>

当然这里还有一种情况就是在模块化的样式表中,你不希望某个类或者ID被模块化,想让他成为全局样式,可以通过:global配置: .test是你不希望被模块化的类

//被:global包裹起来的类名,不会被模块化,而是会全局生效
:global(.test){
color:blue;
}

在react中实现CSS模块化的更多相关文章

  1. 在React中使用CSS Modules设置样式

    最近,一直在看React...那真的是一个一直在学的过程啊,从配置环境webpack,到基础知识jsx,babel,es6,没有一个不是之前没有接触的.其实,我内心是兴奋的啊,毕竟,活着就是要接触一些 ...

  2. react中的路由模块化

    在vue中,可以将路由单独写在一个配置文件中,便于整理维护,而在前面总结整理的react中,都是直接将路由配置放在需要使用的地方,少数的时候话可以接受,但是当项目做大,这种方式就不再被推荐了,我们再r ...

  3. React中使用CSS

    第一种: 在组件中直接使用style 不需要组件从外部引入css文件,直接在组件中书写. import React, { Component } from "react"; con ...

  4. React中引用CSS样式的方法

    相对于html中引用css的三种方法,react中也有三种方法,一一相对: 1. 行内样式:直接在组件内部定义 <div style={{width:'20px',height:'30px'}} ...

  5. 聊一聊 React 中的 CSS 样式方案

    和 Angular,Vue 不同,React 并没有如何在 React 中书写样式的官方方案,依靠的是社区众多的方案.社区中提供的方案有很多,例如 CSS Modules,styled-compone ...

  6. react中antd+css Module一起使用

    antd 和 css modules 不能混用,针对antd的css 单独写一条loader的规则,不开启 css modules. 使用 exclude 和 include 配置参考(https:/ ...

  7. react中使用css动画效果

    index.js import React, { Component, Fragment } from 'react'; class App extends Component { construct ...

  8. react中实现css动画

  9. Angular Vue React 框架中的 CSS

    框架中的 CSS Angular Vue React 三大框架 Angular Vue 内置样式集成 React 一些业界实践 Angular Angular . js (1.x):没有样式集成能力 ...

随机推荐

  1. Javascript模块化编程详解

    在这篇文章中,我将会回顾一下js模块化编程的基础,并且将会讲到一些真的非常值得一提的进阶话题,包括一个我认为是我自创的模式. 模块化编程是一种非常常见Javascript编程模式.它一般来说可以使得代 ...

  2. 网页生命周期-PageLoad事件

    PageLoad事件的作用 l 页面载入是执行的处理命令 l 可以动态创建控件 l 可以设置现有控件的属性和状态 l 常用来设置数据库的连接 l 每次页面载入都会执行

  3. 弱类型dynamic与var

    dynamic与var都可代替任何类型 var关键字是C# 3.0开始新增的特性,称为推断类型. 1.必须在定义时初始化 2.一但初始化完成就不能再给变量赋与初始化值类型不同的值 3.var要求是局部 ...

  4. 1229:密码截获----java

    题目描述 Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码 进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解.比 ...

  5. 【Spring Boot】集成Netty Socket.IO通讯框架

    服务端 @Configuration public class NettySocketConfig { private static final Logger logger = LoggerFacto ...

  6. 多线程篇七:通过Callable和Future获取线程池中单个务完成后的结果

    使用场景:如果需要拿到线程的结果,或者在线程完成后做其他操作,可以使用Callable 和 Futrue 1.定义一个线程池,向线程池中提交单个callable任务 ExecutorService t ...

  7. 多线程篇四:ThreadLocal实现线程范围内变量共享

    1.static实现线程范围内变量共享 package com.test.shareData; import java.util.Random; /** * 多线程范围内的数据共享 * @author ...

  8. 前端(三大框架、Bootstrap,jQuery,自整理)

    前端,HTML(超文本标记语言),CSS(层叠样式表)和JavaScript(脚本语言) HTML,通常说的h5,其实按标准来说,HTML4的后续版本不带编号了,并保证向前的兼容性 CSS的版本3,增 ...

  9. 9th week -the history of program 1950~2020

    We already know that programming language is a formal language designed to communicate instructions ...

  10. 从psd文件到html

    纲要 计划布局,划分整体结构 内容区域,从整体到局部,局部中的通用部分,根据上下文应用样式 公共头部(public-header).尾部(public-footer) 公共容器(public-cont ...