基于react实现一个数字滚动组件(vue也一样,逻辑相同)

直接上代码

1.number-roll.tsx
interface NumberRollProps {value: number;
}
const NUMBER_LIST = Array.from(new Array(10).keys());
const SCROLL_HEIGHT = -15; // 数字滚动高度(也就是数字字体大小),可根据字体大小修改
const NumberRoll = (props: NumberRollProps) => {const { value } = props;const style = {top: `${SCROLL_HEIGHT * value}px`,};return (<div className="number-animation-wrap"><div className="number-animation-wrap-hidden">0</div><div className="number-animation" style={style}>{NUMBER_LIST.map((item, index) => (<div className="number" key={index}>{item}</div>))}</div></div>);
};
export default memo(NumberRoll);
2.number-roll.scss
.number-animation-wrap {position: relative;display: inline-block;overflow: hidden;.number-animation {position: absolute;left: 0;top: 0;height: auto;transform-origin: 0 0;transition: top 0.4s;  // 可调整滚动速度}.number, .number-animation-wrap-hidden {font-size: 15px;    // 数字滚动高度line-height: 15px;height: 15px;font-weight: 400;text-align: center;}.number-animation-wrap-hidden{visibility: hidden;}
}
3.使用组件的方式
import NumberRoll from './number-roll.tsx';
const [number,setNumber] = useState(0);
number?.toString()?.split('')?.map((numberItem, index) => (<NumberRoll key={index} value={Number(numberItem)} />
))
// 在number改变时调用setNumber更新state,就能看到数字滚动的动画了

完毕!

数字滚动组件(react)相关推荐

  1. react 数字滚动组件

    效果图 给数字做了逗号符分割,更符合国际大额数字的浏览效果. /** @Descripttion:* @version:* @Author: dal* @Date: 2021-11-02 16:48: ...

  2. 初级开发者福音:手把手教你实现数字滚动效果~

    文章目录 一.前言 二.背景知识 三.实现方案 Step 1:分析需求 Step 2:实现单个数字的滚动效果 Step 3:组件接口设计 Step 4:完善组件 一.前言 前端数字滚动显示的场景很多, ...

  3. php实现数字滚动效果,vue如何实现数字滚动增加效果?代码示例

    项目中需要做数字滚动增加的效果,一开始很懵,研究了一下原理,发现很简单,贴出来分享一下 ^_^ 数字滚动组件: 0 props: { time: { type: Number, default: 2 ...

  4. Vue 实现数字滚动效果

    效果就是显示某个数值不是直接显示,而是从0开始滚动,直到为那个数值时停止滚动 1.新建数字滚动组件:test.vue文件 <template><div class="num ...

  5. css 数字滚动效果

    先看效果图 一.前置条件 首先了解两个css字符排版的样式 1. writing-mode 设置文本行是水平还是垂直布局 horizontal-tb:默认值,表示水平排版,从上到下 vertical- ...

  6. Vue组件——数字滚动抽奖效果

    闲话不多说(希望对大家有帮助),那就直接上代码吧 可调整数字滚动速度,可指定开奖延迟时间,可指定开奖数字,按个人需求自行改动(录了个效果供参考,临时找的录屏,表介意) 不一一精简了 组件代码 < ...

  7. vue数字滚动效果组件

    数字滚动变化效果组件 效果 预览 体验地址 用途 大屏展示,数字滚动效果 实现 使用js控制元素移动. 关键代码如下: //修改 chang(oldVal,newVal,id){if(oldVal & ...

  8. 【React】手写虚拟滚动组件(二)可自动获取不定高度的虚拟滚动组件

    前言 上次那篇写的虚拟滚动后来使用发现在某些情况并不是特别好用,并且只支持固定高度.我看了下umihook的虚拟滚动,发现也不是很好用,它支持手动设定每个元素高度,但也不能支持不定高度,而且限定更多了 ...

  9. 【react】InfiniteScroll 滚动组件

    在data.d.ts中定义父组件所需要传的值 import { ReactNode } from 'react' type PullStatus = 'pulling' | 'canRelease' ...

最新文章

  1. zw版【转发·台湾nvp系列Delphi例程】HALCON HSerializedItem
  2. LeetCode 12 整数转罗马数字
  3. Oracle数据库之SQL基础(一)
  4. C#中实现对象的深拷贝
  5. redission java_Java注解如何基于Redission实现分布式锁
  6. php html转成数组,PHP_php将HTML表格每行每列转为数组实现采集表格数据的方法,本文实例讲述了php将HTML表格每 - phpStudy...
  7. python反汇编指令_IDApython 命令
  8. Linux新硬盘的使用
  9. imageView 的contentMode问题
  10. Linux cache清理
  11. http之httpClient工具类
  12. 一个 可以在线播放 m3u8 的网页
  13. [2007-03下](Lgz独家秘笈)利用ACDSee5编辑,归档多部DC拍摄的图片
  14. Epicor开发实例
  15. openbmc开发30:webui开发—基础
  16. 网站漏洞检测之常见安全问题
  17. 梅科尔工作室E1-张冉-鸿蒙笔记4
  18. 红旗linux如何开远程桌面,配置VNC服务实现红旗Linux远程桌面访问
  19. 基于Spring Session实现JIM分布式Session
  20. word标尺工具应用:如何快速调整版面距离参数

热门文章

  1. 48. 旋转图像 leetcode
  2. KMP算法 ← C++实现
  3. 新版chrome无法使用IDM下载
  4. 贴吧python登录_爬虫:利用python完成百度贴吧数据采集
  5. Cocos2d-x初入学堂(12)--CCTMXTiledMap和CCTileMapAtlas拼地图
  6. 蓝桥杯单片机第三届初赛程序设计——“自动售水机”设计任务书
  7. 主机mysql在哪里找_虚拟主机数据库在哪里
  8. 网易笔试 android,网易android笔试题目
  9. Android面试题---真实分享
  10. winEdt使用教程