美文网首页
vite vue3 如何在 js 中使用 scss 变量

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

作者: rushui | 来源:发表于2023-04-13 17:45 被阅读0次

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

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

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

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

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

搭建项目

pnpm create vite

项目名:vitescss

选择 vue 和 TypeScript

cd vitescss
pnpm install
pnpm install sass

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

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

<template>
  <div class="demo">
    <button
      v-for="(item, index) in btns"
      :key="index"
      @click="onBtnClick(item.bgColor, item.textColor)"
    >
      {{ item.title }}
    </button>

    <div>
      <div class="example" ref="exampleRef">Hello World</div>
    </div>
  </div>
</template>

<script lang="ts" setup>
import { ref } from 'vue'

const btns = [
  { title: '红色主题', bgColor: '#FF9191', textColor: '#FF0000' },
  { title: '蓝色主题', bgColor: '#B3C4FF', textColor: '#042BA9' },
  { title: '默认主题', bgColor: '#333333', textColor: '#FFFFFF' }
]
const currentBgColor = ref('#333333')
const currentTextColor = ref('#FFFFFF')
const onBtnClick = (bgColor: string, textColor: string) => {
  console.log(bgColor, textColor)
  currentBgColor.value = bgColor
  currentTextColor.value = textColor
}
</script>

<style scoped lang="scss">
.demo {
  padding: 10px;

  .example {
    --textColor: v-bind(currentTextColor);
    --bgColor: v-bind(currentBgColor);

    display: inline-block;
    margin-top: 20px;
    font-size: 20px;
    padding: 20px 50px;
    color: var(--textColor);
    background: var(--bgColor);
  }
}
</style>

相关文章

网友评论

      本文标题:vite vue3 如何在 js 中使用 scss 变量

      本文链接:https://www.haomeiwen.com/subject/mzaaddtx.html