CSS Modules

213 阅读2分钟

今天又学习了一个新知识,写个小文章加深印象~

如题,我们来探讨下,CSS Modules到底是个什么东西?

官方的介绍是:

所有的 class 的名称和动画的名称默认属于本地作用域的 CSS 文件。 所以 CSS Modules 不是一个官方的规范,也不是浏览器的一种机制,它是一种构建步骤中的一个进程。(构建通常需要 webpack 或者 browserify 的帮助)。通过构建工具的帮助,可以将 class 的名字或者选择器的名字作用域化。(类似命名空间化)。 在没有学习之前,我只知道它会在样式的类名上加上一串哈希值,其功能和作用一概不知。

接下来,就由我来简单说明下它的功能与作用吧~

它的功能主要是局部作用域和模块依赖,这里我只浅谈局部作用域。

众所周知,css的规则都是全局的,任何一个组件的样式规则,都对整个页面有效。产生局部作用域的唯一方法,就是使用一个独一无二的class的名字,不会与其他选择器重名,但是当我们与其他人共同开发的时候,无法保证一定与其他人不同,这时候就要用到css modules,它能很好的解决全局样式冲突的问题,能够确保所有的样式服务于单个组件。

虽然它的作用域是局部作用域,但还是可以通过该语法:global(.className){}达到全局作用域的效果,因为凡是这样声明的class,都不会被编译成哈希字符串。

这个写法能够很好的帮助我们修改组件中的默认样式,当我们在项目中使用了antd或antdMobile或其他UI组件需要修改个别组件默认样式时,通过该语法就能够实现。之前只知道可以使用该方法达到修改默认组件样式的目的,但知其然不知其所以然。

以上就是我今天学习Css Modules的小小分享,后续学习深入后再补充相关内容,如有理解错误的地方,希望大家不吝赐教,感谢阅读~

参考:阮一峰老师的CSS Modules 用法教程