vue3 集成 Sass

创建全局默认样式
在src 文件夹下 创建 styles 并创建 index.scss 引入到项目

import '@/styles/index.scss'

配置scss 全局变量 @import “./src/styles/variable.scss”; 冒号不能少不然会报错

export default defineConfig({
  plugins: [
    vue(),
    createSvgIconsPlugin({
      // 指定需要缓存的图标文件夹
      iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
      // 指定symbolId格式
      symbolId: 'icon-[dir]-[name]',
    })
  ],
  // 配置 @ 导入
  resolve: {
    alias: {
      "@": path.resolve("./src")
    }
  },
  // 配置scss 全局配置变量
  css: {
    preprocessorOptions: {
      scss: {
        javascriptEnabled: true,
        additionalData: '@import "./src/styles/variable.scss";',
      }
    }
  }
})

清除全局样式 reset.scss

/**
 * ENGINE
 * v0.2 | 20150615
 * License: none (public domain)
 */

 *,
 *:after,
 *:before {
     box-sizing: border-box;
 
     outline: none;
 }
 
 html,
 body,
 div,
 span,
 applet,
 object,
 iframe,
 h1,
 h2,
 h3,
 h4,
 h5,
 h6,
 p,
 blockquote,
 pre,
 a,
 abbr,
 acronym,
 address,
 big,
 cite,
 code,
 del,
 dfn,
 em,
 img,
 ins,
 kbd,
 q,
 s,
 samp,
 small,
 strike,
 strong,
 sub,
 sup,
 tt,
 var,
 b,
 u,
 i,
 center,
 dl,
 dt,
 dd,
 ol,
 ul,
 li,
 fieldset,
 form,
 label,
 legend,
 table,
 caption,
 tbody,
 tfoot,
 thead,
 tr,
 th,
 td,
 article,
 aside,
 canvas,
 details,
 embed,
 figure,
 figcaption,
 footer,
 header,
 hgroup,
 menu,
 nav,
 output,
 ruby,
 section,
 summary,
 time,
 mark,
 audio,
 video {
     font: inherit;
     font-size: 100%;
 
     margin: 0;
     padding: 0;
 
     vertical-align: baseline;
 
     border: 0;
 }
 
 article,
 aside,
 details,
 figcaption,
 figure,
 footer,
 header,
 hgroup,
 menu,
 nav,
 section {
     display: block;
 }
 
 body {
     line-height: 1;
 }
 
 ol,
 ul {
     list-style: none;
 }
 
 blockquote,
 q {
     quotes: none;
     &:before,
     &:after {
         content: '';
         content: none;
     }
 }
 
 sub,
 sup {
     font-size: 75%;
     line-height: 0;
 
     position: relative;
 
     vertical-align: baseline;
 }
 sup {
     top: -.5em;
 }
 sub {
     bottom: -.25em;
 }
 
 table {
     border-spacing: 0;
     border-collapse: collapse;
 }
 
 input,
 textarea,
 button {
     font-family: inhert;
     font-size: inherit;
 
     color: inherit;
 }
 
 select {
     text-indent: .01px;
     text-overflow: '';
 
     border: 0;
     border-radius: 0;
 
     -webkit-appearance: none;
        -moz-appearance: none;
 }
 select::-ms-expand {
     display: none;
 }
 
 code,
 pre {
     font-family: monospace, monospace;
     font-size: 1em;
 }
### 配置和使用 Sass #### 在 Vue 项目中安装依赖包 为了能够在 Vue 项目中使用 Sass,需要先通过 npm 或 yarn 安装 `sass` 和 `sass-loader`。这可以通过命令行工具完成: ```bash npm install sass sass-loader --save-dev ``` 或者如果偏好使用 Yarn,则可以执行如下命令: ```bash yarn add sass sass-loader --dev ``` 此操作会下载并安装必要的软件包到项目的开发环境中[^1]。 #### 修改 Webpack 配置 对于基于 Webpack 的构建系统,在 `webpack.config.js` 中添加针对 `.scss` 文件类型的处理规则是必需的操作之一。具体来说是在模块规则里加入对 SCSS 文件的支持,确保样式能够被正确解析与加载: ```javascript module.exports = { module: { rules: [ // ...其他规则, { test: /\.scss$/, use: [&#39;style-loader&#39;, &#39;css-loader&#39;, &#39;sass-loader&#39;] } ] } }; ``` 这段配置使得当遇到以 `.scss` 结尾的文件时,Webpack 将依次应用指定的 loader 来编译这些资源[^2]。 #### 在组件内使用 Sass 变量 一旦完成了上述设置之后,就可以轻松地在单文件组件 (SFC) 中导入定义好的 Sass 文件中的变量或其他功能特性了。下面是一个简单的例子展示了如何做到这一点: ```html <template> <div class="example"> <p :style="{ color: themeColor }">这段文字的颜色由SCSS变量控制</p> </div> </template> <script setup lang="ts"> import variables from &#39;@/styles/variables.module.scss&#39;; const themeColor = variables.themeColor; </script> ``` 这里展示了一个基本的例子,其中包含了从外部引入的 SCSS 文件以及利用其内部声明的一个颜色变量来动态改变页面上某个元素的文字颜色[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值