【Less】全局样式重复注入问题
创始人
2024-05-22 08:57:22
0
// package.json
{"less": "^4.1.3","vite": "^3.1.0",
}

参考:

  1. [less/sass]如何避免因公共模块导致生成重复css代码
  2. 解决 Vue CSS 样式重复载入,为 Vue 添加全局 less 或 sass 基础样式库【不是本篇解决方法,但值得mark一下】
  3. Vite中预处理器(如less)的配置
  4. 手写 css-modules 来深入理解它的原理
  5. CSS:CSS Modules
  6. 阮一峰 - CSS Modules 用法教程
  7. Vite 文档 - CSS Modules
  8. Less 文档 - Import Options

开发项目途中,发现一些样式被重复注入

在这里插入图片描述

然后分别点击所在style,发现都是 xxx.module.less 文件出现这种重复注入的情况(CSS Modules)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

经过查阅文章和文档,得知,在 @import less 文件的时候,需要加 (reference) 关键字:

  • 修改之前(因为重复的样式是我在 vite.config.js 配置引入的全局样式
    import { defineConfig } from 'vite'
    export default defineConfig({css: {preprocessorOptions: {less: {javascriptEnabled: true,// 因为没加 (reference) 关键字,所以导致加载 xxx.module.less 时重复注入additionalData: `@import "@/styles/variables.less";@import '@/styles/global.less';`}}}
    })
    
  • 修改之后(误)
    后话:引入变量即可,reference 也可不需要,而 global.less 全局类名样式则在 main.js 引入。除非你不写 xxx.module.less (Css Modules)可以这样引入,否则就会出现样式重复注入的情况
    import { defineConfig } from 'vite'
    export default defineConfig({css: {preprocessorOptions: {less: {javascriptEnabled: true,additionalData: `@import (reference) "@/styles/variables.less";@import (reference) '@/styles/global.less';`}}}
    })
    

结果

在这里插入图片描述
。。。然而这样做导致 global.less 所有类名不生效(因为根本就没被引入),所以最好的做法是,只有当全局变量时,才进行配置引入,而像是 global.less 这样的全局样式,则直接在 main.js 引入即可

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...