文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

React如何实现数字滚动组件numbers-scroll

2023-07-05 11:05

关注

本篇内容主要讲解“React如何实现数字滚动组件numbers-scroll”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React如何实现数字滚动组件numbers-scroll”吧!

首先给大家看下轮子的效果吧:

React如何实现数字滚动组件numbers-scroll

一、设计原理

如果要做到数字滚动效果,就一定要让数字有从下往上移动的感觉。如果只是纯粹的数字变化,显示出来的效果就会比较普通了,没有什么视觉上的冲击感,如图所示:

React如何实现数字滚动组件numbers-scroll

所以,我们需要数字在变化过程中,有种纸带往上抽的感觉。初始状态中,数字都在显示框下方等待。数字滚动中,则根据数字的大小决定滚动速度,数字越大,滚动越快;数字越小,则滚动越慢,这样会有一种参差的感觉,滚动的效果也会让人觉得更自然一些。

React如何实现数字滚动组件numbers-scroll

二、实现方式

初始状态中,每个数字展示的窗口下边都有0-9这10个数字在等待中,传入具体数字后,每个窗口就可以开始移动数字的位置了。

移动数字的位置可以有三种方式:1. 通过js改变样式(虽然逻辑更容易实现,但是执行效率太低,直接放弃);2. 通过animation来控制margin-top的值。3. 通过animation来控制transform的值。

虽然个人觉得通过tranform来控制显示位置会更好些,但是目前采用的是方式二,控制margin-top的值来展示数字的位置,效果还算可以了,有兴趣的同学可以改造成transform。

React代码片段如下:

<span className={scrollClass}>    <label style={numberStyle}>0</label>    <label style={numberStyle}>1</label>    <label style={numberStyle}>2</label>    <label style={numberStyle}>3</label>    <label style={numberStyle}>4</label>    <label style={numberStyle}>5</label>    <label style={numberStyle}>6</label>    <label style={numberStyle}>7</label>    <label style={numberStyle}>8</label>    <label style={numberStyle}>9</label>    <label style={numberStyle}>0</label></span>

Css代码片段如下:

.numbers-scroll00 {   margin-top: -10 * $marginTop;   animation: scrollNumber0 1s linear 1 normal;   -moz-animation: scrollNumber0 1s linear 1 normal;   -webkit-animation: scrollNumber0 1s linear 1 normal;   -o-animation: scrollNumber0 1s linear 1 normal;}@keyframes scrollNumber0 {   0% { margin-top: 0px; }   100% { margin-top: -1100;}}

三、使用方式

安装依赖:

npm install numbers-scroll --save

引入数字滚动组件的两种示例:

// 示例1import React, { useState } from 'react'import NumbersScroll from 'numbers-scroll'const MyNumberScroll = () => {    const [number, setNumber] = useState(896507);    return (        <div className="example-container">            <NumbersScroll                split={true}                value={number}                numberStyle={{                fontSize: 50,                background: "#51a4e9",                color: "#fff",                marginLeft: 2,                marginRight: 2                }}            />        </div>    )}// 示例2import React, { Component } from "react"import NumbersScroll from 'numbers-scroll'class MyNumberScroll extends Component {  constructor(props) {    super(props)    this.state = {      number: 896507    }  }  render() {    const { number } = this.state    return <div className="example-container">      <NumbersScroll        split={true}        value={number}        numberStyle={{          fontSize: 50,          background: "#51a4e9",          color: "#fff",          marginLeft: 2,          marginRight: 2        }}      />    </div>  }}

四、参数说明

为了能够让组件应用在更多场景中,可以传入4个参数:split,value,numberStyle,containerStyle;其中numberStyle,containerStyle可以分别控制数字和容器的样式,用户可以随时调整以适应自己的场景。

参数名是否必须默认值描述
splitfasle是否加上分隔符
value0显示数字
numberStyle
数字的样式
containerStyle
容器的样式

numbers-scroll这个组件目前仅支持react,可以用于多种场景。

到此,相信大家对“React如何实现数字滚动组件numbers-scroll”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯