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

宁波企业网站排名优化网页设计期末作业模板

宁波企业网站排名优化,网页设计期末作业模板,长沙哪里有专业做网站,购物平台哪个便宜又靠谱介绍: 当数字变化时&#xff0c;只改变变化的数字位&#xff0c;其余的不变&#xff0c;可以递增、递减、骤变、负数也可以&#xff0c;但是样式要根据具体的项目需求去改&#xff1b; 效果1、增加数字&#xff1a; 效果2、减少数字&#xff1a; 使用方法&#xff1a; <te…

介绍:

        当数字变化时,只改变变化的数字位,其余的不变,可以递增、递减、骤变、负数也可以,但是样式要根据具体的项目需求去改;

效果1、增加数字:

效果2、减少数字:

使用方法:

<template><AnimatNumber :data="data" />
</template><script setup>
// 引入动画
import AnimatNumber from "./components/AnimatNumber.vue";const data = ref(0);setInterval(() => {data.value -= 30;
}, 2000);
</script><style lang="scss"></style>

组件代码(vue3):

<template><div class="num-wrap"><div v-for="(item, index) in computedData" :key="index" class="num-item"><div class="num-inner" ref="numInnerRef"><div class="prev">{{ item.newValue }}</div><div class="current">{{ item.oldValue }}</div><div class="next">{{ item.oldValue }}</div></div></div></div>
</template><script setup>
// 数字滚动效果
import { onBeforeUnmount, watch, ref, nextTick } from "vue";const props = defineProps({// 传进来的数据  number、string的number都可以data: {type: [Number, String],default: 999},// 动画持续时间  number、string的number都可以  最低1000msduration: {type: [Number, String],default: 500},// 基本的高度 所有的动画移动距离都是和这个有关的,确保这个值和css的$height一样,否则有问题baseHeight: {type: Number,default: 50}
});const numInnerRef = ref();// raf演示器
const setTimeoutPolyfill = (func, delay) => {let startTime = Date.now();let rafId;function animationFrameCallback() {const currentTime = Date.now();const timeElapsed = currentTime - startTime;if (timeElapsed >= delay) {func();} else {rafId = requestAnimationFrame(animationFrameCallback);}}rafId = requestAnimationFrame(animationFrameCallback);// 返回一个取消函数return () => cancelAnimationFrame(rafId);
};/*
推演公式新          旧1001  ->   10001002  ->   10011003  ->   10021004  ->   10031005  ->   1004
*/const newArr = ref([]);
const oldArr = ref([]);
const computedData = ref(props.data.toString().split("").map((item, index) => ({ index, oldValue: item, newValue: item }))
);
const lock = ref(false);
// 延时器
const timer = ref({timerOne: null,timerTwo: null
});watch(() => props.data,(newVal, oldVal) => {if (`${newVal}`.length !== `${oldVal}`.length) {lock.value = false;}if (!lock.value) {computedData.value = props.data.toString().split("").map((item, index) => ({ index, oldValue: item, newValue: item }));lock.value = true;}newArr.value = newVal.toString().split("").map((item, index) => ({ index, value: item }));oldArr.value = oldVal.toString().split("").map((item, index) => ({ index, value: item }));/*如果newArr的长度大于于oldArr的长度,则需要给oldArr从前面增加newArr.length - oldArr.length的长度的{ index, oldValue: '-', newValue: newValueItem }, 同时更新oldArr没有新增的index*/// 新值和老值差const differLength = newArr.value.length - oldArr.value.length;if (newArr.value.length > oldArr.value.length) {for (let i = 0; i < differLength; i++) {oldArr.value.unshift({ index: i, value: "-" });}// 重新设置indexoldArr.value.forEach((item, index) => (item.index = index));}// 改变的数字的索引集合const indexArr = [];newArr.value.forEach(item => {if (item.value !== oldArr.value[item.index].value) {indexArr.push(item.index);}});nextTick(() => {indexArr.forEach(diffIndex => {numInnerRef.value[diffIndex].children[0].innerHTML =newArr.value[diffIndex].value;numInnerRef.value[diffIndex].children[0].animate([{ top: `${-props.baseHeight}px` }, { top: 0 }],{duration: props.duration,fill: "forwards"});numInnerRef.value[diffIndex].children[1].animate([{ top: "0" }, { top: `${props.baseHeight}px` }],{duration: props.duration,fill: "forwards"});timer.value.timerOne = setTimeoutPolyfill(() => {numInnerRef.value[diffIndex].children[2].innerHTML =oldArr.value[diffIndex].value;timer.value.timerTwo = setTimeoutPolyfill(() => {numInnerRef.value[diffIndex].children[1].innerHTML =newArr.value[diffIndex].value;}, props.duration);numInnerRef.value[diffIndex].children[2].style.top = `${-props.baseHeight}px`;}, props.duration);});});},{ deep: true }
);// 卸载
onBeforeUnmount(() => {timer.value.timerOne && timer.value.timerOne();timer.value.timerTwo && timer.value.timerTwo();
});
</script><style lang="scss" scoped>
$width: 50px;
$height: 50px;
.num-wrap {margin-top: 200px;display: flex;gap: 10px;.num-item {width: $width;height: $height;border: 1px solid #000;border-radius: 8px;font-size: 20px;font-weight: 600;position: relative;overflow: hidden;color: #0dfbff;background: rgba(0, 13, 23, 0.5);.num-inner {position: relative;width: $width;height: $height;}.prev,.current,.next {width: $width;height: $height;text-align: center;line-height: $width;position: absolute;}.prev {top: -$height;}.current {top: 0;}.next {top: $height;}}
}
</style>

http://www.ds6.com.cn/news/21757.html

相关文章:

  • 做网站的调查问卷seo建站工具
  • 正保建设工程网站环球资源外贸平台免费
  • 建设官网的网站网络营销推广策划案例
  • 网络营销网站规划建设怎么做
  • 广州微网站建设拼多多跨境电商平台
  • 的网站制作网站优化推广怎么做
  • 关于服装的网站规划与设计微信朋友圈广告投放
  • 零度业务网站自媒体推广渠道有哪些
  • jsp网站制作西安今日头条新闻消息
  • 汕头市作风建设的网站百度广告费用
  • 做网站时怎样分割网络热词2021流行语
  • 内部网站建设百度投票人气排行榜入口
  • 网站如何添加数据关键词搜索排名查询
  • 杭州网站建设网络公司台州网络推广
  • 阿里云 部署网站网站提交入口
  • seo整站如何优化徐州百度快照优化
  • wordpress首页截断seo厂商
  • 网站建设试用百度极速版
  • 做流量哪个网站好app推广接单平台哪个好
  • 免费做封面的网站合肥网络公司排名
  • 健身网站开发过程中遇到的麻烦深圳华强北最新消息
  • url对网站有威胁怎么办济南seo优化公司助力排名
  • 自己做的网站外网访问产品推广运营方案
  • 纳溪区城乡住房建设局网站宁波seo优化排名
  • 抖音代运营服务商网站seo培训
  • aoc24g2色域外链seo
  • 网站建设项目申请ppt免费二级域名查询网站
  • 熊岳网站在哪做郑州网络推广服务
  • 网站备案 香港空间拉新推广怎么找渠道
  • 绍兴网站建设免费b2b网站推广有哪些