You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vue中通过JavaScript将SCSS变量动态设置为CSS变量

你写的代码不生效的核心原因是:#{}是SCSS的编译期插值语法,仅在SCSS编译为CSS的阶段生效。你把它写在Vue的运行时代码中时,SCSS已经完成编译,浏览器根本无法识别该语法,自然不会生效。

以下是两种常用场景的正确实现方式:

场景1:直接通过props动态绑定CSS变量(最常用)

不需要额外处理SCSS,直接在Vue的模板元素上通过style绑定动态注入CSS变量即可,后续在<style>里直接调用该CSS变量:

<template>
  <!-- 给需要生效的容器绑定style,直接传入props的值即可,不需要加任何插值语法 -->
  <div :style="{ '--backgroundColor': backgroundColor }" class="content-box">
    测试内容
  </div>
</template>

<script setup>
// 定义props接收外部传入的颜色值
const props = defineProps({
  backgroundColor: {
    type: String,
    default: '#ffffff'
  }
})
</script>

<style lang="scss">
.content-box {
  /* 直接使用已绑定的CSS变量即可 */
  background-color: var(--backgroundColor);
}
</style>

场景2:需要把动态值同步给现有SCSS变量使用

如果你的项目中已经有统一维护的SCSS变量,需要用动态传入的值覆盖SCSS变量的默认值,只要把SCSS变量的取值指向对应的CSS变量即可:

// SCSS变量定义文件
$primary-bg: var(--backgroundColor, #f5f5f5); // 第二个参数为默认兜底值,没有传入CSS变量时生效

// 业务代码中直接使用SCSS变量即可,会自动读取动态传入的值
.content-box {
  background-color: $primary-bg;
}

内容的提问来源于stack exchange,提问作者Maruko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:06:04