scss引入其他scss变量,且通过js动态修改scss变量(亲测,已修改)

先展示结果

在这里插入图片描述

统一用的html

<template>
  <div class="home">
    <h1>Gordon-Liu</h1>
    <h2 ref="h2">Gordon-Liu</h2>
    <h3>Gordon-Liu</h3>
  </div>
</template>

1、scss引入其他scss变量

test.scss文件

						//定义scss变量
$color1: red;
$color2: blue;
$color3: var(--test);

:export {				//暴露scss变量
  newColor1: $color1;
  newColor2: $color2;
  newColor3: $color3;
}

引入index.scss文件

@import './test.scss'

引入在main.js文件

import './style/index.scss'

2、vue文件中的scss引入并使用

@import '../style/test.scss';
  .home {
    h1 {
      color: $color1;
    }
  }

3、在js中引入并使用scss中的变量

 import scss from '../style/test.scss'
 data(){
    return {
      blue: scss.newColor2
    }
  },
  mounted() {
    this.cutColor();
  },
  methods: {
    cutColor() {
      this.$refs.h2.style.color = this.blue;
    }
  }

4、js动态修改scss变量

看了很多网上的代码都是下面这样的
在这里插入图片描述
我试了几遍效果没出来,解决办法如下:
test.scss文件中的代码:

//用var来盛放--test变量名,用于js做动态修改,这里将后面的默认值去掉了后才可达到效果
$color3: var(--test);

vue文件夹中的使用

  mounted() {
    this.cutColor();
  },
  methods: {
    cutColor() {
      document.getElementsByTagName('body')[0].style.setProperty('--test', 'yellow');
      //或
      window.document.getElementsByTagName('body')[0].style.setProperty('--test', 'yellow');
    }
  }
  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值