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

维基百科建设网站产品推广营销

维基百科建设网站,产品推广营销,电子商务网站建设需要知识,网站如何注册域名vue3封装数值动态递增组件前言源码举个例子:前言 1)使用技术: vue3.2 Ts 2)组件接收参数: 参数类型意义是否可选valuenumber数值大小必填durationnumber递增动画持续时间(单位:s)…

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)效果在这里插入图片描述


提示:文章到此结束,文章为个人学习记录,侵删。
http://www.ritt.cn/news/2932.html

相关文章:

  • 番禺网站建设开发竞价如何屏蔽恶意点击
  • 开封淘宝网站建设百度推广一个月多少钱
  • 企业咨询服务合同模板免费seo咨询服务价格
  • 公司网站招聘费如何做会计分录中国国家培训网正规吗
  • 如何做直播做菜视频网站哪个公司要做网络推广
  • 行业自助建站优化营商环境条例心得体会
  • 如何做一个网站平台房地产销售
  • wordpress建售卖产品的网站线上培训平台
  • 做网站排名软件1688如何搜索关键词排名
  • 网站建设季度考核评价工作总结山西疫情最新情况
  • gta5网站建设中站长之家app
  • 网站广告位代码黑马培训价目表
  • 中小企业网站制作过程中要注意什么网络销售怎么做才能做好
  • php网站设计杭州百度优化
  • 网站推广公司傻大白nba最新消息交易情况
  • 中国空间站航天员首次出舱网络运营培训
  • 想做个网站 怎么做的做一个电商平台大概需要多少钱
  • 二级已备案域名免费使用关于华大18年专注seo服务网站制作应用开发
  • 网站建设属那种营业百度ai开放平台
  • typecho做网站qq群排名优化
  • 帮忙注册公司多少钱seo免费外链工具
  • 做黑帽需不需要搭建网站企业网站建设优化
  • 网站建设公司 待遇四平网络推广
  • 徐州市小程序制作站长工具seo诊断
  • 企业网站代备案沈阳seo博客
  • 做视频网站可行吗bilibili推广网站
  • 免费企业邮箱申请上海网站快速优化排名
  • 杭州网络公司网站佛山网站搜索排名
  • 做网站需要什么设备百度提交网址入口
  • 仿一个网站谷歌搜索引擎入口2023