vite vue3 中如何在 js 中使用 scss 变量

vite vue3 中如何在 js 中使用 scss 变量

不管工作还是学习,我都很喜欢用 scss 和 less ,真的比纯 css 方便太多了。

本文讲解如何在 js 里导入 scss 的变量。

在动态换肤的网站里这种做法很常见。

我使用 vite 搭建一个 vue3 项目来举例。

搭建项目

1pnpm create vite

项目名:vitescss

选择 vue 和 TypeScript

1cd vitescss
2pnpm install
3pnpm install sass

注意,安装的是 sass 。但我们是可以使用 scss 语法的。

修改 App.vue 为如下代码 npm run dev 即可查看效果

 1<template>
 2  <div class="demo">
 3    <button
 4      v-for="(item, index) in btns"
 5      :key="index"
 6      @click="onBtnClick(item.bgColor, item.textColor)"
 7    >
 8      {{ item.title }}
 9    </button>
10
11    <div>
12      <div class="example" ref="exampleRef">Hello World</div>
13    </div>
14  </div>
15</template>
16
17<script lang="ts" setup>
18import { ref } from "vue";
19
20const btns = [
21  { title: "红色主题", bgColor: "#FF9191", textColor: "#FF0000" },
22  { title: "蓝色主题", bgColor: "#B3C4FF", textColor: "#042BA9" },
23  { title: "默认主题", bgColor: "#333333", textColor: "#FFFFFF" },
24];
25const currentBgColor = ref("#333333");
26const currentTextColor = ref("#FFFFFF");
27const onBtnClick = (bgColor: string, textColor: string) => {
28  console.log(bgColor, textColor);
29  currentBgColor.value = bgColor;
30  currentTextColor.value = textColor;
31};
32</script>
33
34<style scoped lang="scss">
35.demo {
36  padding: 10px;
37
38  .example {
39    --textColor: v-bind(currentTextColor);
40    --bgColor: v-bind(currentBgColor);
41
42    display: inline-block;
43    margin-top: 20px;
44    font-size: 20px;
45    padding: 20px 50px;
46    color: var(--textColor);
47    background: var(--bgColor);
48  }
49}
50</style>

发布日期:2023-04-14 23:52 字数:206 用时 1分钟
tags:vite vue3 scss