当前位置: 首页 > news >正文

React学习———CSS Modules(样式模块化)

CSS Modules

CSS Modules(样式模块化)是一种用于模块化和局部作用域化CSS样式的技术,让CSS只在当前组件内生效,避免全局样式冲突的技术方案

工作原理

  • 文件命名:通常以.module.css.module.less.module.scss等结尾:例如:index.module.less
  • 局部作用域CSS Modules通过为类名生成唯一的哈希值,确保样式不会与其他模块的样式冲突
/* index.module.less */
.root {background: #fff;
}

每个样式类名在编译时会被自动生成一个独一无二的哈希后缀,编译后的类名可能变成root__3k2jf_1只在当前组件内生效

  • 模块化导入:在JavaScriptTypeScript中,可以直接导入CSS Modules文件,并通过对象的形式访问类名
  • 支持组合CSS Modules允许通过composes关键字组合多个类名,实现样式的复用
.base{padding: 10px;
}
.button{composes: base;background-color: blue;
}
  • 与构建工具集成CSS Modules通常与 WebpackVite等构建工具结合使用,通过配置启用模块化功能,例如,在Webpack中可以通过css-loadermodules选项启用CSS Modules

典型用法

// Button.modules.css

.button {background-color: #007bff;color: white;padding: 10px 20px;border: none;border-radius: 5px;
}.button:hover {background-color: #0056b3;
}

// React 组件中

import React from 'react'
import styles from './Button.modules.css'const Button = () => {<button className={styles.button}>点击</button>
}
export default Button 

全局样式

  • :global:是CSS Modules(样式模块化)的一个特殊语法,用于声明全局样式。
.root {...:global {.logo-wrap { ... }}
}

1、.root依然是局部样式,只在当前组件生效
2、:global里的.logo-wrap这个类名会直接变成全局类名,不会被哈希处理,任何地方都能使用

相关文章:

  • CSS:三大特性
  • 黑马点评面试前复习
  • 事件驱动架构:从传统服务到实时响应的IT新风潮
  • MySQL 高可用
  • 光谱相机的空间分辨率和时间分辨率
  • 聊一聊接口测试的一致性如何处理?
  • h5,原生html,echarts关系网实现
  • 金融问答系统:如何用大语言模型打造高精度合规的金融知识引擎
  • 数据库故障排查指南:从入门到精通
  • 卡顿检测与 Choreographer 原理
  • 20250516使用TF卡将NanoPi NEO core开发板出厂的Ubuntu core22.04.3系统降级到Ubuntu core16.04.2
  • 视频抽帧并保存blob
  • 用户现场不支持路由映射,如何快速将安防监控EasyCVR视频汇聚平台映射到公网?
  • 分布式锁: Redisson红锁(RedLock)原理与实现细节
  • TC8:SOMEIP_ETS_029-030
  • R语言如何解决导出pdf中文不显示的问题
  • 【C++】 —— 笔试刷题day_30
  • 现在环保方面有什么新的技术动态
  • Python - 爬虫;Scrapy框架之items,Pipeline管道持久化存储(二)
  • 云计算与大数据进阶 | 26、解锁云架构核心:深度解析可扩展数据库的5大策略与挑战(上)
  • 新闻1+1丨强对流天气频繁组团来袭,该如何更好应对?
  • 刘国中将出席第78届世界卫生大会并顺访瑞士、访问白俄罗斯
  • 澳大利亚首例“漂绿”诉讼开庭:能源巨头因“碳中和”承诺遭起诉
  • 国防部:赖清德歪曲二战历史,背叛民族令人不齿
  • 当番茄霸总遇上晋江古言,短剧IP小变局
  • 马上评|安排见义勇为学生补考,善意与善意的双向奔赴