组件间样式覆盖问题--CSS Modules

2023-11-19

1.组件间样式覆盖问题

① 问题:CityList 组件的样式,会影响 Map 组件的样式
② 原因:在配置路由时,CityList 和 Map 组件都被导入到项目中,那么组件的样式也就被导入到项目中了。如果组件之间样式名称相同,那么一个组件中的样式就会在另一个组件中也生效,从而造成组件之间样式相互覆盖的问题。
③ 结论:默认,只要导入了组件,不管组件有没有显示在页面中,组件的样式就会生效。
④ 如何解决?

  1. 手动处理 (起不同的类名)
  2. CSS IN JS

2. CSS IN JS

  • CSS IN JS:是使用 JavaScript 编写 CSS 的统称,用来解决 CSS 样式冲突、覆盖等问题
  • CSS IN JS 的具体实现有 50 多种,比如:CSS Modules、styled-components 等
  • 推荐使用:CSS Modules (React脚手架已集成,可直接使用)

3. CSS Modules 的说明

  • CSS Modules 通过对 CSS 类名重命名,保证每个类名的唯一性,从而避免样式冲突的问题
  • 换句话说:所有类名都具有“局部作用域”,只在当前组件内部生效
  • 实现方式:webpack的 css-loader 插件
  • 命名采用:BEM(Block 块、Element 元素、Modifier 三部分组成)命名规范,比如:.list__item_active
  • 在 React 脚手架中演化成:文件名、类名、hash(随机)三部分,只需要指定类名即可

/* 自动生成的类名,我们只需要提供 classname 即可 */
[filename]_[classname]__[hash]

// 类名
.error {}
// 生成后的类名
.Button_error__ax7yz

4.React中使用CSS Modules

  1. 创建名为 [name].module.css 的样式文件(React脚手架中的约定,与普通 CSS 作区分)

// 创建样式文件名
index.module.css

  1. 组件中导入该样式文件(注意语法)

// 在 CityList 组件中导入样式文件:
import styles from ‘./index.module.css’

  1. 通过 styles 对象访问对象中的样式名来设置样式

这里是引用 div className={styles.test}><div

5.React中编写CSS的常见方案

参考:

https://blog.csdn.net/m0_71485750/article/details/126713426

https://lanan.blog.csdn.net/article/details/126715988

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

组件间样式覆盖问题--CSS Modules 的相关文章

随机推荐

  • 微信支付的收款功能被限制了怎么办,收款受限制怎么解除?

    使用小程序做电商 商城的微信支付的收款功能会遇到被限制的情况 直接影响用户下单后的付款操作 其实也不单单是小程序 商城APP中也会冒出类似的提示 遇到这种事情不要慌 根据具体的异常提示给出不同的解决方案 微信支付被限制的错误提示 我们列举两
  • 浅析数据库连接池(二)

    上一篇博客 主要是简单的介绍了普通数据库连接的过程以及耗费的资源 并且简单的谈了下连接池 这篇我们主要来看看数据库连接池的使用以及它最优的配置 总目录 1 数据库连接过程是怎样的 2 连接所占用的资源有哪些 3 连接池简介 4 连接池的使用
  • 用python画星空源代码

    from turtle import from random import random randint screen Screen width height 800 600 screen setup width height screen
  • 每天都在谈SOA和微服务,但你真的理解什么是服务吗?

    近几年来 我一直从事着和面向服务相关的底层软件研发工作 逐渐的形成了一些自己的看法 其中我觉得比较重要的看法就是服务需要一个更准确细致的定义 简单来说 服务的本质就是行为 业务活动 的抽象 为了更好的阐述新服务的概念 并方便与传统的SOA中
  • 【c语言】Hanoi塔问题

    一块板上有三根针 A B C A 针上套有 64 个大小不等的圆盘 大的在下 小的在上 如图 5 4 所示 要把这 64 个圆盘从 A 针移动 C 针上 每次只能移动一个圆盘 移动可以借 助 B 针进行 但在任何时候 任何针上的圆盘都必须保
  • 本周总结——勇敢尝试和体验

    人间烟火 生活趣事 快开学了 这一周都在写项目 键盘前一段时间坏掉了 当时买了保险 3年之内只换不修的 挺奇葩的 寄过去13天都没搭理我 也没说给换货 前几天忍不住打电话问了问 下午就发货了 昨天下午就领到了 看来有些东西还是需要主动问一问
  • 搞懂后序遍历!只需要这一篇

    讲讲对于后序遍历的理解 并通过题目加深理解 文章目录 核心 基础实现方式 104 二叉树的最大深度 111 二叉树的最小深度 222 完全二叉树的节点个数 110 平衡二叉树 101 对称二叉树 总结 核心 后序遍历的顺序为左右中 在一棵二
  • 在Ubuntu上安装Android-SDK的方法

    一 安装和配置Ubuntu系统 1 安装Ubuntu Desktop 14 04 x86 64 2 启用root账户 Ubuntu 14 04默认是不允许root账户登录的 在登录窗口只能看到普通用户和访客登录 在shell中运行以下命令即
  • 优化游标性能

    最好的改进光标性能的技术就是 能避免时就避免使用游标 摘自 Transact SQL权威指南 Ken Henderson 著 最好的改进光标性能的技术就是 能避免时就避免使用游标 SQL Server是关系数据库 其处理数据集比处理单行好得
  • ROS学习笔记(7):Navigation 导航

    目录 8 Navigation 8 1 Navigation工作框架 8 2 move base 8 3 Costmap 8 4 map server 8 5 AMCL 定位 8 Navigation Navigation是机器人最基本的功
  • 小程序显示富文本内容(wxparse)

    1 引入wxParse 下载地址https github com icindy wxParse 2 全局配置 3 获取富文本内容的js 加入如下内容
  • 在电力系统无功不足的情况下,为什么不宜采用调整变压器分头的办法来提高电压?

    在电力系统无功不足的情况下 为什么不宜采用调整变压器分头的办法来提高电压 答 当某一地区的电压由于变压器分头的改变而升高的时候 该地区所需的无功功率也增大了 这就可能扩大系统的无功缺额 从而导致整个系统的电压水平更加下降 从全局来看 这样做
  • Redis VS Memcached压力测试报告

    一 测试背景与目标 了解Redis和memcached在高并发条件下的响应时间 吞吐量情况 以及对于服务器的压力情况 包括CPU IO 网络 考察目前的memcached存储timeline的方式的在高并发条件下的响应时间 吞吐量 负载情况
  • flink大数据处理流式计算详解

    flink大数据处理 文章目录 flink大数据处理 二 WebUI可视化界面 测试用 三 Flink部署 3 1 JobManager 3 2 TaskManager 3 3 并行度的调整配置 3 4 区分 TaskSolt和parall
  • 7、MySQL默认值(DEFAULT)

    默认值 Default 的完整称呼是 默认值约束 Default Constraint 用来指定某列的默认值 在表中插入一条新记录时 如果没有为某个字段赋值 系统就会自动为这个字段插入默认值 例如 员工信息表中 部门位置在北京的较多 那么部
  • ASPX页面传参中文乱码处理

    前端 function var msg 这是一段中文参数 window location href New aspx name escape msg 后台 string msg Server UrlDecode Request msg To
  • 【前端】批量导入和导出Excel数据

    1 准备 excel导入功能需要使用npm包xlsx 所以需要安装xlsx插件 读取和写入都依赖她 npm i xlsx 0 17 0 vue element admin模板提供了一个导入excel数据的文件 我们只需用即可 代码地址 ht
  • TypeError: ‘(slice(None, None, None), slice(None, None, None))‘ is an invalid key

    这种错误很常见 主要可能是我们操作的 df 是一个dataframe 应该正确的运用索引 loc或者iloc 例如 我遇到一次错误 factors data 其它因素 m n factors shape corrs np zeros n n
  • 深度系统linux deepin如何按装,安装深度Deepin 15.11操作系统的方法

    你可以使用VirtualBox 6虚拟机安装深度Deepin 15 11操作系统 也可以使用硬盘 光盘 USB等方式安装Deepin 15 11 电脑为huawei matebook 14 在配置VirtualBox 6后进行安装Deepi
  • 组件间样式覆盖问题--CSS Modules

    1 组件间样式覆盖问题 问题 CityList 组件的样式 会影响 Map 组件的样式 原因 在配置路由时 CityList 和 Map 组件都被导入到项目中 那么组件的样式也就被导入到项目中了 如果组件之间样式名称相同 那么一个组件中的样