当前位置: 首页 > news >正文

vue3封装数值动态递增组件

vue3封装数值动态递增组件

  • 前言
  • 源码
  • 举个例子:


前言

1)使用技术:

vue3.2 + Ts

2)组件接收参数:

参数类型意义是否可选
valuenumber数值大小必填
durationnumber递增动画持续时间(单位:s)可选,默认为2
isDecimalboolean是否显示为小数可选,默认为false

3)补充:
组件本身没有过多样式,想实现不同样式可以在调用组件时自定义设置样式

源码

<template><div><span ref="numberDom">0</span></div>
</template><script setup lang="ts">
import { ref, onMounted, onBeforeUpdate, onBeforeUnmount, withDefaults, defineProps } from 'vue';/*** @param value 数值大小 * @param duration 递增动画持续时间;* @param isDecimal 是否显示为小数*/
const props = withDefaults(defineProps<{value: number,duration: number,isDecimal: boolean}>(), {duration: 2,isDecimal: false
})let timer: number  | null = null
const timerDelay = 5
const numberDom = ref<any>(null)onMounted(() => {numericalIncrement(numberDom.value)
})
onBeforeUpdate(() => {if (timer) {clearInterval(timer!)timer = null}numericalIncrement(numberDom.value)
})
onBeforeUnmount(() => {if (timer) {clearInterval(timer!)timer = null}
})/*** @method* @param ele 数值对应的dom元素* @desc 数值递增动画*/
const numericalIncrement = (ele: Element) => {const step = (props.value * timerDelay) / (props.duration * 1000)let current: number = 0let start: number = 0let flag: boolean = falsetimer = setInterval(() => {start += stepif (start >= props.value) {flag = props.isDecimalclearInterval(timer!)start = props.valuetimer = null}current = startif (flag) {ele.innerHTML = current.toString().replace(/(\d)(?=(?:\d{3}[+]?)+$)/g, '$1,')} else {ele.innerHTML = current.toFixed(0) .toString().replace(/(\d)(?=(?:\d{3}[+]?)+$)/g, '$1,')}}, timerDelay)
}
</script><style scoped>
div {display: inline-block;
}
</style>

举个例子:

1)使用代码

<template><div><NumericalIncrement :duration="2" :is-decimal="true" :value="val" class="num"></NumericalIncrement></div>
</template><script setup lang="ts">
import NumericalIncrement from './components/NumericalIncrement.vue'
import {ref,onMounted} from 'vue';
const val = ref(110)
onMounted(()=>{setTimeout(()=>{val.value=200},3000)
})
</script><style scoped>
.num {min-width: 40px;text-align: center;font-size: 20px;background-color: orange;color:#fff;
}
</style>

2)效果在这里插入图片描述


提示:文章到此结束,文章为个人学习记录,侵删。

相关文章:

vue3封装数值动态递增组件

vue3封装数值动态递增组件前言源码举个例子&#xff1a;前言 1&#xff09;使用技术&#xff1a; vue3.2 Ts 2&#xff09;组件接收参数&#xff1a; 参数类型意义是否可选valuenumber数值大小必填durationnumber递增动画持续时间&#xff08;单位&#xff1a;s&#xff09;…...

JavaWeb_RequestResponse

目录 一、概述 二、Request对象 1.Request继承体系 2.Request获取请求数据 ①获取请求行数据 ②获取请求头数据 ③获取请求体数据 ④获取请求参数 3.Request请求转发 三、Response 1.Response设置响应数据功能 ①响应行 ②响应头 ③响应体 2.请求重定向 3.路径问…...

C语言刷题——“C”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰要巩固一下之前学过的知识&#xff0c;那么&#xff0c;最好的复习方式就是刷题啦&#xff0c;现在&#xff0c;我们就进入C语言的世界吧 从最简单的开始噢 完完全全零基础都能看懂 题目来源于牛客网 编程语言初学训…...

【刷题】搜索——BFS:城堡问题(The Castle)

目录题目代码&#xff08;Flood Fill&#xff09;代码&#xff08;并查集&#xff09;题目 题目链接 找出房间个数——>求连通块个数 最大房间——>求最大连通块 直接用flood fill算法 注意题目的输入&#xff0c;例如118211182111821&#xff0c;则代表有西、北、南墙…...

深度学习——torch相关函数用法解析

1. torch.ones() torch.ones(*sizes, outNone) → Tensor函数功能&#xff1a;返回一个全为1 的张量&#xff0c;形状由可变参数sizes定义。 参数: sizes (int…) – 整数序列&#xff0c;定义了输出形状 out (Tensor, optional) – 结果张量 例子&#xff1a; >>> …...

ubuntu 20使用kubeadm安装k8s 1.26

步骤 机器&#xff1a;4核8G&#xff0c;root账号&#xff0c;可访问互联网 1、更新apt apt-get update 2、安装一些基本工具 apt-get install ca-certificates curl gnupg lsb-release net-tools apt-transport-https 3、ifconfig 获取ip&#xff0c;hostname获取主机名&…...

低代码开发平台|制造管理-生产过程管理搭建指南

1、简介1.1、案例简介本文将介绍&#xff0c;如何搭建制造管理-生产过程。1.2、应用场景先填充工序信息&#xff0c;再设置工艺路线对应的工序&#xff1b;工序信息及工艺路线列表报表展示的是所有工序、工艺路线信息&#xff0c;可进行新增对应数据的操作。2、设置方法2.1、表…...

python对多个csv文件进行合并(表头需一致)

之前写过python对【多个Excel文件】中的【单个sheet】进行合并&#xff0c;参考&#xff1a;点我 之前也写过python对【多个Excel文件】中的【多个sheet】进行合并&#xff0c;参考&#xff1a;点我 今天再写一个python对多个csv格式的文件进行合并的小工具 但是大家切记&am…...

Salesforce Apex调用邮件模板

正常调用无模板&#xff1a;mail.setToAddresses(new List<String>{user.Email});//mail.setReplyTo(444298824qq.com);//mail.setCcAddresses(null);mail.setSenderDisplayName(EOP系统);mail.setSubject(EOP通知&#xff08;待审批&#xff09;&#xff1a;您有未处理的…...

windows本地开发Spark[不开虚拟机]

1. windows本地安装hadoop hadoop 官网下载 hadoop2.9.1版本 1.1 解压缩至C:\XX\XX\hadoop-2.9.1 1.2 下载动态链接库和工具库 1.3 将文件winutils.exe放在目录C:\XX\XX\hadoop-2.9.1\bin下 1.4 将文件hadoop.dll放在目录C:\XX\XX\hadoop-2.9.1\bin下 1.5 将文件hadoop.dl…...

一文教你快速估计个股交易成本

交易本身对市场会产生影响&#xff0c;尤其是短时间内大量交易&#xff0c;会影响金融资产的价格。一个订单到来时的市场价格和订单的执行价格通常会有差异&#xff0c;这个差异通常被称为交易成本。在量化交易的策略回测部分&#xff0c;不考虑交易成本或者交易成本估计不合理…...

Leetcode—移除元素、删除有序数组中的重复项、合并两个有序数组

移除元素 此题简单&#xff0c;用双指针方法即可&#xff0c; 如果右指针指向的元素不等于val&#xff0c;它一定是输出数组的一个元素&#xff0c;我们就将右指针指向的元素复制到左指针位置&#xff0c;然后将左右指针同时右移&#xff1b; 如果右指针指向的元素等于 val&…...

面试(十)大疆 安全开发 C++1面

1. 在C++开发中定义一个变量,若不做初始化直接使用会怎样? 如果该变量是一个普通变量,则如果对其进行访问,会返回一个随机值,int类型不一定为0,bool类型也不一定为false 如果该变量为一个静态变量,则初始值都是一个0; 如果该变量是一个指针,那么在后续程序运行中很…...

短信链接跳转微信小程序

短信链接跳转微信小程序1 实现方案1.1 通过URL Scheme实现1.2 通过URL Link实现1.3 通过云开发静态网站实现2 实现方案对比3 实践 URL Schema 方案3.1 获取微信access_token3.2 获取openlink3.3 H5页面&#xff08;模拟短信跳转&#xff0c;验证ok&#xff09;4 问题小节4.1 io…...

吉林电视台启用乾元通多卡聚合系统广电视频传输解决方案

随着广播电视数字化、IP化、智能化的逐步深入&#xff0c;吉林电视台对技术改造、数字设备升级提出了更高要求&#xff0c;通过对系统性能、设计理念的综合评估&#xff0c;正式启用乾元通多卡聚合系统广电视频传输解决方案&#xff0c;将用于大型集会、大型演出、基层直播活动…...

Linux常用命令1

目录1、远程登陆服务器2、文件相关&#xff08;1&#xff09;文件和目录属性&#xff08;2&#xff09;创建目录mkdir&#xff08;3&#xff09;删除目录rmdir&#xff08;4&#xff09;创建文件touch&#xff08;5&#xff09;删除文件或目录rm&#xff08;6&#xff09;ls命令…...

【C++进阶】一、继承(总)

目录 一、继承的概念及定义 1.1 继承概念 1.2 继承定义 1.3 继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、菱形继承及菱形虚拟继承 7.1 继承的分类 7.2 菱形虚拟…...

AttributeError: module ‘lib‘ has no attribute ‘OpenSSL_add_all_algorithms

pip安装crackmapexec后,运行crackmapexec 遇到报错 AttributeError: module lib has no attribute OpenSSL_add_all_algorithms 直接安装 pip3 install crackmapexec 解决 通过 python3 -m pip install --upgrade openssl 或者 python3 -m pip install openssl>22.1.…...

Python实现视频自动打码功能,避免看到羞羞的画面

前言 嗨呀嗨呀&#xff0c;最近重温了一档综艺节目 至于叫什么 这里就不细说了 老是看着看着就会看到一堆马赛克&#xff0c;由于太好奇了就找了一下原因&#xff0c;结果是因为某艺人塌房了…虽然但是 看综艺的时候满影响美观的 咳咳&#xff0c;这里我可不是来教你们如何解…...

说说Knife4j

Knife4j是一款基于Swagger2的在线API文档框架使用Knife4j, 需要 添加Knife4j的依赖当前建议使用的Knife4j版本, 只适用于Spring Boot2.6以下版本, 不含Spring Boot2.6 在主配置文件(application.yml)中开启Knife4j的增强模式必须在主配置文件中进行配置, 不要配置在个性化配置文…...

嵌入式开发问题复现与调试技巧

嵌入式开发常见问题及解决方法1. 问题复现方法稳定复现问题是解决嵌入式系统故障的首要步骤。根据问题特性&#xff0c;可采用以下三种复现方法&#xff1a;1.1 模拟复现条件对于依赖特定外部条件的问题&#xff0c;最直接的复现方式是精确还原问题发生时的环境参数。工程实践中…...

【仿真】【具身智能】云端低成本畅玩Isaac Lab:抢占式实例部署实战

1. 为什么选择云端抢占式实例部署Isaac Lab 第一次接触Isaac Lab时&#xff0c;我和大多数开发者一样被本地部署的高门槛吓退了。一张RTX 3090显卡就要上万元&#xff0c;更别提配套的CPU和内存配置要求。后来尝试过VNC远程连接方案&#xff0c;结果画面卡顿得像在看PPT&#x…...

IC设计工程师必看:ESD测试四大组合详解与实战避坑指南

IC设计工程师必看&#xff1a;ESD测试四大组合详解与实战避坑指南 在集成电路设计领域&#xff0c;静电放电&#xff08;ESD&#xff09;防护能力是衡量芯片可靠性的关键指标之一。据统计&#xff0c;超过35%的芯片失效案例与ESD事件相关&#xff0c;而设计阶段的防护策略直接影…...

Ubuntu 20.04 下 Vitis 2021.2 离线安装全记录:从77G压缩包到环境变量配置(附磁盘分区建议)

Ubuntu 20.04环境下Vitis 2021.2超大型工程软件部署实战指南 当77GB的Vitis安装包静静躺在硬盘角落时&#xff0c;任何工程师都会意识到这将是一场硬仗。不同于常规软件安装&#xff0c;FPGA开发环境的部署更像是在操作系统中搭建另一个操作系统——它需要精确的磁盘规划、严格…...

卡梅德生物技术快报|重金属铬制备单克隆抗体:全实验流程与技术要点详解

在生物检测试剂研发领域&#xff0c;制备单克隆抗体是开发免疫分析方法的核心工作&#xff0c;重金属铬作为食品与环境中常见的污染物&#xff0c;其高特异性单克隆抗体的制备对实现铬残留快速检测至关重要。本文基于最新的实验研究&#xff0c;从试剂准备、抗原合成、细胞融合…...

PDF补丁丁实战指南:从文档难题到高效解决方案的全流程掌握

PDF补丁丁实战指南&#xff1a;从文档难题到高效解决方案的全流程掌握 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱&#xff0c;可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档&#xff0c;探查文档结构&#xff0c;提取图片、转成图片等等 项目地址: https:…...

ROS2 MoveIt配置实战:解决机械臂在RViz中‘只规划不执行’和模型不显示的常见问题

ROS2 MoveIt实战&#xff1a;机械臂在RViz中规划执行失败的深度排查指南 1. 问题现象与初步诊断 当你在RViz中点击"Plan and Execute"按钮时&#xff0c;机械臂模型却纹丝不动&#xff0c;或者干脆连模型都加载不出来——这种场景恐怕是ROS2开发者最头疼的遭遇之一。…...

nanomsg深度解析:高性能消息传递库的架构设计与实战应用

nanomsg深度解析&#xff1a;高性能消息传递库的架构设计与实战应用 【免费下载链接】nanomsg nanomsg library 项目地址: https://gitcode.com/gh_mirrors/na/nanomsg nanomsg是一个轻量级、高性能的可扩展性协议库&#xff0c;实现了多种常见的消息传递模式&#xff0…...

Chat Bot 开发实战:从零构建高可用对话系统的核心技术与避坑指南

Chat Bot 开发实战&#xff1a;从零构建高可用对话系统的核心技术与避坑指南 在当今的数字化交互中&#xff0c;Chat Bot&#xff08;聊天机器人&#xff09;已成为连接用户与服务的关键桥梁。无论是客服咨询、智能助手还是娱乐互动&#xff0c;一个稳定、智能的对话系统都至关…...

Wan2.2-I2V-A14B部署案例:中小企业低成本搭建私有AI视频生成平台

Wan2.2-I2V-A14B部署案例&#xff1a;中小企业低成本搭建私有AI视频生成平台 1. 引言&#xff1a;为什么选择私有部署AI视频生成平台 在数字内容创作需求激增的今天&#xff0c;视频制作已成为企业营销、产品展示的重要方式。传统视频制作流程复杂、成本高昂&#xff0c;而公…...