vue的script动态改css、scss变量方法

news/2025/2/11 12:55:42/

 解决场景:script设颜色变量,<style>的background-color的值"#ddd"的跟着变

   序     

        1、这篇博文适用vue2和vue3版本,博主实验时,vue3的版本是^3.2.45

        2、 其实要解决的方案在vue3里有一个专栏“单文件组件的 <style> 标签支持使用 v-bind CSS 函数将 CSS 的值链接到动态的组件状态”

       3、对了这里说下,原来vue3的style vars={color}属性已经不能用了,被其他方法替代了,详情去看这篇官方文档-》SFC style CSS variable injection (new edition) by yyx990803 · Pull Request #231 · vuejs/rfcs · GitHub        4、如果你纯vue3没用!任何!第三方!框架(这里指的),你直接考下面这个demo,直接是可以跑的,下面demo你还用不了,你在往博文下面看

<template><div class="text">hello</div>
</template><script>
export default {data() {return {color: 'red'}}
}
</script><style>
.text {color: v-bind(color);
}
</style>

        好了正文,如果上面demo你跑不了,你确认下是不是vue3版本比博主低?

        博主以下说的是vue2、和vue3+ts版本、vue3的sass版本、vue3的vue-class-component工具类、vue3的vue-property-decorator工具类都可以执行的方法。

        先科普下,别闲博主烦,照着先做↓↓↓↓↓↓

<html><head></head><body><input type="text"/><style>:root {--color: pink;}input {background-color: var(--color);}</style></body>
</html>

        以上代码运行之后的结果如下图,input的北京变成红色。是吧,这个是纯静态是".html"的文件哦

root{--color:red;},这个时候你可以认为是声明变量。 然后在你要放变量的地方var(--color)就可以调用了,

        以上为灵感,结合在vue2博主百度了些资料,搞了个通用方法如下

切记你别连vue-property-decorator也复制了,这里弄vue-property-decorator是告诉你他也可以用

<template><a class="sumbit-btn" :style="'--color:'+color" >登录</a>
</template>
<script lang="ts">import {Vue} from "vue-property-decorator";export default class Login extends Vue {data(){return{color:"red",}}}
</script><style lang="scss">.sumbit-btn{color:var(--color);}</style>

结果如下图

 

扩展

--color 你可以写在vue的computed函数里、或者methods函数里定义一个方法,然后这里style就可以直接:style="style()"这句话要看的懂

<template><a class="sumbit-btn" :style="style" >登录</a>
</template>
data(){return{color:"red",}}

computed: {style() {return {"--color": this.color};}}

博文为雪狼博主原创,博客地址: 雪狼之夜的博客_CSDN博客-vue,eggjs,js领域博主

原创不易,点个赞呗。


http://www.ppmy.cn/news/2744.html

相关文章

npm包是什么?如何发布npm包?

Node的组成 内置模块 自定义模块 第三方模块&#xff08;什么是包&#xff1f;&#xff09; npm包包括那些东西&#xff1f; package.json README.md 。。。.js 注册npm账号 细节 发布包 package.json README.md index.js date htmlEscape 层级结构 发布指令 N…

入门系列 - Git安装与配置

Git安装与配置 要使用Git&#xff0c;你必须在你的电脑上安装它。要不要使用并升级到最新的Git&#xff0c;那取决您的需要了。 下载Git 要下载Git安装程序&#xff0c;请访问Git的官方网站并进入下载页面。本文写于2022-11-29&#xff0c;此时您可以去官网链接去下载&#…

Linux下安装mysql5.7.18

查询mysql的安装文件&#xff1a; find / -name mysql有安装mysql的路径&#xff0c;有是存放MySQL安装包的路径 卸载mysql: 删除安装路劲 rm -rf /opt/mysql删除配置文件 rm -rf /etc/my.cnf删除/etc/init.d/下跟mysql有关的全部文件&#xff0c;一般包括mysql文件或mys…

Vue 使用socket.io实现聊天室

使用socket.io实现聊天室的实时通信功能。 安装socket.io:npm install socket.io在后端服务器中引入socket.io并启动服务器:const app = require(express)() const server = require(http).Server

canal+kafaka实现mysql与redis数据同步(centos7)

为什么不直接使用 canal 同步数据到redis中&#xff1f; 回答: 数据同步的代码和业务逻辑代码搅合在一起不方便维护。 目前cannal的最新版支持三种消息队列&#xff0c;kafka , rocketmq(有bug) rabbitMq 因此本文使用kafka作为mysql同步数据到redis的消息队列 kafka2.8以…

Python爬虫实战,Request+urllib模块,批量下载爬取飙歌榜所有音乐文件

前言 今天给大家介绍的是Python爬取飙歌榜所有音频数据并保存本地&#xff0c;在这里给需要的小伙伴们代码&#xff0c;并且给出一点小心得。 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫&#xff0c;基本的是加请求头&#xff0c;但是这样的纯文 本数据爬取…

外汇天眼:什么是外汇动量交易?新手指南

1. 什么是动量交易&#xff1f; 我们需要了解的第一件事是动量到底是什么。势头是字面意义上的趋势强度。动量交易策略涉及仅在强劲的价格趋势方向开仓&#xff0c;利用持续的价格变动&#xff0c;并在趋势逆转之前退出。 动量交易者通常不会担心趋势在哪里结束和开始&#x…

【软件测试】资深测试告诉你做好测试需求分析是有多么重要......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 测试需求到底是什么…