CSS 框架 词条目录
前端Wiki/词条/CSS Modules

CSS Modules

定义在构建期给类名自动加上唯一哈希后缀,从物理上杜绝样式冲突的局部 CSS 方案

CSS Modules 的做法很直接:编写时写 .btn,打包后类名变成 .btn_x7y3k2,组件里引用编译后的名字,团队里再多人同时写 .btn 也互不影响,从机制上就实现了样式作用域隔离。它在 React 生态里最常见,create-react-app、Next.js 等脚手架约定 .module.css 后缀即可开箱即用,不需要额外配置。

相比 BEM 靠命名约定自律,CSS Modules 靠工具强制隔离,团队不用再开会争论前缀规范;相比 CSS in JS 它没有运行时开销,样式仍然是纯静态文件。代价是和 JS 组件绑定较深,动态拼接类名要写 styles 对象取值,跨组件复用样式不如全局 CSS 直观。Vue 的 scoped 是同一思想的不同实现,原理是给元素加唯一属性选择器。

JavaScript
/* Button.jsx —— CSS Modules 的用法 */
import styles from './Button.module.css';

function Button() {
  /* 编译后 class 变成 button_1x2y3 之类唯一名 */
  return <button className={styles.button}>局部作用域按钮</button>;
}
⚠ 常见误区
🔗 相关词条按需加载Sass
← 返回来源章节按需加载