欢迎来到科站长!

JavaScript

当前位置: 主页 > 网络编程 > JavaScript

微信小程序通过自定义animate-numbers组件实现进入页面时数字跳动效果

时间:2025-01-26 09:30:10|栏目:JavaScript|点击:

目录

微信小程序中实现进入页面时数字跳动效果

1. 组件定义,新建animate-numbers组件

1.1 index.js

// components/animate-numbers/index.js
Component({
  properties: {
    number: {
      type: Number,
      value: 0
    },
    duration: {
      type: Number,
      value: 1000
    }
  },
  data: {
    displayNumber: 0,
    animationFrameId: null
  },
  observers: {
    'number': function (newNumber) {
      this.animateNumber(newNumber);
    }
  },
  methods: {
    animateNumber(targetNumber) {
      const start = this.data.displayNumber;//旧值
      const end = targetNumber;//新值
      const duration = this.properties.duration;
      const increment = (end - start) / (duration / 16); // 假设每秒60帧,每帧间隔约16ms
      let current = start;
      if(this.data.animationFrameId){
        clearInterval(this.data.animationFrameId);
      }
      const animate = () => {
        current += increment;
        if ((increment > 0 && current >= end) || (increment < 0 && current <= end)) {
          clearInterval(this.data.animationFrameId);
          this.setData({ displayNumber: end });
        } else {
          this.setData({ displayNumber: Math.round(current) });
        }
      };
      this.data.animationFrameId = setInterval(animate, 16);
    }
  },
  // 组件被移除时清除定时器
  detached() {
    clearInterval(this.data.animationFrameId);
  }
});

1.2 wxml

{{displayNumber}}

1.3 wxss

page {
  font-size: 48rpx;
  font-weight: bold;
}

2. 使用组件

"animate-numbers": "../../../components/animate-numbers/index"

 

到此这篇关于微信小程序中实现进入页面时数字跳动效果(自定义animate-numbers组件)的文章就介绍到这了,更多相关小程序数字跳动内容请搜索科站长以前的文章或继续浏览下面的相关文章希望大家以后多多支持科站长!

上一篇:深入探究JavaScript中作用域的底层机制

栏    目:JavaScript

下一篇:微信小程序自定义导航栏功能的实现

本文标题:微信小程序通过自定义animate-numbers组件实现进入页面时数字跳动效果

本文地址:https://fushidao.cc/wangluobiancheng/3107.html

广告投放 | 联系我们 | 版权申明

申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:257218569 | 邮箱:257218569@qq.com

Copyright © 2018-2025 科站长 版权所有冀ICP备14023439号