CSS模块就是所有的类名都只有局部作用域的CSS文件,即CSS文件中的所有类名和动画名的作用域都默认为当前作用域。CSS模块将作用域限制于组件中,从而避免了全局作用域的问题。

本教程操作环境:windows7系统、CSS3版、Dell G3电脑。
CSS模块是:
CSS files in which all class names and animation names are scoped locally by default.
CSS文件中的所有类名(class names) 和动画名(animation names) 的作用域都默认为当前作用域。
CSS模块就是所有的类名都只有局部作用域的CSS文件。
立即学习“前端免费学习笔记(深入)”;
所以CSS模块不是浏览器中的 官方标准(official spec) 或者 实践(implementation) 而是一个(在Webpack或者Browserify的帮助下)改变类名和选择器的作用域到当前文件(类似于命名空间)的构建过程。
这看起来像什么以及为什么这样呢?我们将马上看到它。首先,记住通常情况下HTML和CSS是怎么工作的。一个类名应用到HTML中:
An example heading
在CSS中定义这个类:
.title {
background-color: red;
}一旦这个CSS被应用到这个HTML文档中,应用这个类的h1的背景色将变为红色。我们不需要处理CSS或者HTML。浏览器明白这些文件的格式。
CSS模块采用了不同的方法。与写纯HTML不同,我们需要在一个JavaScript文件中,比如index.js写我们的标记。下面这个例子告诉我们它将怎样工作(稍后我们将采用一个更实际的例子):
import styles from "./styles.css";
element.innerHTML =
`
An example heading
`;在我们的构建过程中,编译程序将查看我们引入的styles.css文件,随后查看我们的JavaScript文件,将.title类通过styles.title应用。我们的构建过程接着将处理这些到一个新的、分离的HTML和CSS文件,用一个新的字符串替换HTML类属性(HTML Class )和CSS选择器类(CSS selector class)。
生成的HTML文件可能是这样:
An example heading
生成的CSS文件可能是这样:
._styles__title_309571057 {
background-color: red;
}之前的类属性和选择器.title已经完全不存在了,取而代之的是一个全新的字符串。我们之前的CSS已经根本不提供给浏览器了。

为什么我们应该使用CSS模块?
使用CSS模块,它将保证所有样式都作用于单个组件:
在一个地方
只应用于该组件而没有别的
此外,任何组件都可以有一个真正的依赖关系,如
import buttons from "./buttons.css"; import padding from "./padding.css"; element.innerHTML = `相关文章
如何避免过度使用!important关键字导致代码难以维护?
如何确保CSS模块化开发中的样式隔离?
当选择器优先级相同,如何确定样式的应用顺序?
不同浏览器对CSS3动画的支持度不同,如何优雅降级?
如何利用闭包实现模块模式?
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
更多热门AI工具










