CSS Module

CSS Module

什么是 CSS Module?

CSS Modules 不是官方规范或浏览器中的实现,而是构建步骤中的一个过程(在 Webpack 或 Browserify 的帮助下),它改变了类名和选择器的作用域(即有点像命名空间)。

目的:解决 CSS 中全局作用域的问题

开启 CSS Module

在 React 中默认开启了 CSS Module,样式表文件需要以 xxx.module.sass/less/css 命名。
在这里插入图片描述
在这里插入图片描述

作用域

默认Less或者CSS的规则是全局生效的,任何一个组件,只要有同名的className就会共用样式。

CSS Module可以有效避免作用域问题,它会生成一个唯一的标识作为className

全局作用域(:global)

修改第三方组件样式
:global(), 保证包裹的变量不受影响
如果我们想要修改第三方组件样式,默认情况通过css-module无法修改,需要添加:global才可以。

.login {
  height: 100vh;
  background: url(/imgs/login_bg.jpeg) no-repeat;
  background-size: cover;
  background-position: center;
  :global(.title) {
    font-size: 42px;
    line-height: 1.5;
    text-align: center;
    margin-bottom: 30px;
  }
  :global(.ant-btn-primary) {
    background-color: red;
  }
}
Vite 是一个非常快速的前端构建工具,它内置了对 CSS 的支持,包括 CSS 模块化。下面是在 Vite 中实现 CSS 模块化的步骤: 1. 安装依赖 首先,您需要安装 `sass` 和 `sass-loader` 依赖项,它们将帮助您在 Vite 中使用 CSS 模块化。 ``` npm install sass sass-loader --save-dev ``` 2. 配置 `vite.config.js` 在 `vite.config.js` 中,您需要配置 `css` 属性来启用 CSS 模块化和 `sass` 预处理器。例如: ``` import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' export default defineConfig({ plugins: [vue()], css: { modules: { localsConvention: 'camelCaseOnly' }, preprocessorOptions: { scss: { additionalData: `@import "@/styles/variables.scss";` } } } }) ``` 在上面的示例中,`css.modules` 属性启用了 CSS 模块化,并将类名转换为 CamelCase 格式。`preprocessorOptions.scss` 属性启用了 `sass` 预处理器,并将全局变量文件导入到所有样式文件中。 3. 创建样式文件 在您的样式文件中,您可以使用 `:local()` 选择器来定义局部样式。例如: ``` .container { padding: 10px; background-color: white; border-radius: 5px; :local(.title) { font-size: 18px; color: #333; } :local(.description) { font-size: 14px; color: #666; } } ``` 在上面的示例中,`:local()` 选择器定义了 `.title` 和 `.description` 类的局部样式。 4. 在组件中使用样式 在您的组件中,您可以像这样导入样式文件: ``` <template> <div class="container"> <h2 class="title">Title</h2> <p class="description">Description</p> </div> </template> <style module> @import "@/styles/your-styles.scss"; </style> ``` 在上面的示例中,`<style module>` 标签启用了 CSS 模块化,并导入了样式文件。然后,您可以像这样在组件中使用局部类名:`.title` 和 `.description`。 这就是在 Vite 中实现 CSS 模块化的基本步骤。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小李科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值