最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React實現(xiàn)數(shù)字滾動組件numbers-scroll的示例詳解

 更新時間:2023年03月10日 14:26:49   作者:一步一個腳印一個坑  
數(shù)字滾動組件,也可以叫數(shù)字輪播組件,這個名字一聽就是非常普通常見的組件。本文將利用React實現(xiàn)這一組件,感興趣的小伙伴可以了解一下

數(shù)字滾動組件,也可以叫數(shù)字輪播組件,這個名字一聽就是非常普通常見的組件,第一反應(yīng)就是想找找網(wǎng)上大佬的東西頂禮膜拜一下,這一搜,還真是沒找到趁手的╮(╯▽╰)╭。

最近接了大屏的需求,數(shù)字滾動肯定是免不了的,所以開始擼袖子,造輪子了( numbers-scroll )。

首先給大家看下輪子的效果吧:

一、設(shè)計原理

如果要做到數(shù)字滾動效果,就一定要讓數(shù)字有從下往上移動的感覺。如果只是純粹的數(shù)字變化,顯示出來的效果就會比較普通了,沒有什么視覺上的沖擊感,如圖所示:

所以,我們需要數(shù)字在變化過程中,有種紙帶往上抽的感覺。初始狀態(tài)中,數(shù)字都在顯示框下方等待。數(shù)字滾動中,則根據(jù)數(shù)字的大小決定滾動速度,數(shù)字越大,滾動越快;數(shù)字越小,則滾動越慢,這樣會有一種參差的感覺,滾動的效果也會讓人覺得更自然一些。

二、實現(xiàn)方式

初始狀態(tài)中,每個數(shù)字展示的窗口下邊都有0-9這10個數(shù)字在等待中,傳入具體數(shù)字后,每個窗口就可以開始移動數(shù)字的位置了。

移動數(shù)字的位置可以有三種方式:1. 通過js改變樣式(雖然邏輯更容易實現(xiàn),但是執(zhí)行效率太低,直接放棄);2. 通過animation來控制margin-top的值。3. 通過animation來控制transform的值。

雖然個人覺得通過tranform來控制顯示位置會更好些,但是目前采用的是方式二,控制margin-top的值來展示數(shù)字的位置,效果還算可以了,有興趣的同學(xué)可以改造成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;}
}

三、使用方式

1. 安裝依賴:

npm install numbers-scroll --save

2. 引入數(shù)字滾動組件的兩種示例:

// 示例1
import 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>
    )
}
// 示例2
import 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>
  }
}

四、參數(shù)說明

為了能夠讓組件應(yīng)用在更多場景中,可以傳入4個參數(shù):split,value,numberStyle,containerStyle;其中numberStyle,containerStyle可以分別控制數(shù)字和容器的樣式,用戶可以隨時調(diào)整以適應(yīng)自己的場景。

參數(shù)名是否必須默認值描述
splitfasle是否加上分隔符
value0顯示數(shù)字
numberStyle數(shù)字的樣式
containerStyle容器的樣式

numbers-scroll這個組件目前僅支持react,可以用于多種場景。

到此這篇關(guān)于React實現(xiàn)數(shù)字滾動組件numbers-scroll的示例詳解的文章就介紹到這了,更多相關(guān)React數(shù)字滾動組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • react axios配置代理(proxy),如何解決本地開發(fā)時的跨域問題

    react axios配置代理(proxy),如何解決本地開發(fā)時的跨域問題

    這篇文章主要介紹了react axios配置代理(proxy),如何解決本地開發(fā)時的跨域問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 一個基于react的圖片裁剪組件示例

    一個基于react的圖片裁剪組件示例

    本篇文章主要介紹了一個基于react的圖片裁剪組件示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • 淺談React Event實現(xiàn)原理

    淺談React Event實現(xiàn)原理

    這篇文章主要介紹了淺談React Event實現(xiàn)原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • react mobx 基本用法示例小結(jié)

    react mobx 基本用法示例小結(jié)

    mobx是一個輕量級的狀態(tài)管理器,所以很簡單(單一全局數(shù)據(jù)使用class)類有g(shù)et 數(shù)據(jù)方法,本文通過示例代碼介紹react mobx 基本用法,感興趣的朋友有一起看看
    2023-11-11
  • React文件名和目錄規(guī)范最佳實踐記錄(總結(jié)篇)

    React文件名和目錄規(guī)范最佳實踐記錄(總結(jié)篇)

    React在使用時非常靈活,如果沒有一個規(guī)范約束項目,在開發(fā)過程中會非?;靵y,本文將介紹幾個優(yōu)秀的規(guī)范,介紹文件名和目錄前,需要先簡述一下幾種通用的類型,用來區(qū)分文件的功能,感興趣的朋友一起看看吧
    2022-05-05
  • 基于React封裝一個驗證碼輸入控件

    基于React封裝一個驗證碼輸入控件

    郵箱、手機驗證碼輸入是許多在線服務(wù)和網(wǎng)站常見的安全驗證方式之一,本文主要來和大家討論一下如何使用React封裝一個驗證碼輸入控件,感興趣的可以了解下
    2024-03-03
  • React 無狀態(tài)組件(Stateless Component) 與高階組件

    React 無狀態(tài)組件(Stateless Component) 與高階組件

    這篇文章主要介紹了React 無狀態(tài)組件(Stateless Component) 與高階組件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • 淺談react useEffect閉包的坑

    淺談react useEffect閉包的坑

    筆者最近用react useEffect閉包,其中踩到了一些坑在此與大家分享一下。需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • react-router-dom?降低版本的兩種方法詳解

    react-router-dom?降低版本的兩種方法詳解

    這篇文章主要介紹了react-router-dom?降低版本的兩種方法,本篇文章就記錄下如何降低 react-router-dom 為 v5 版本的兩種方法,需要的朋友可以參考下
    2022-12-12
  • React如何動態(tài)控制偽元素樣式

    React如何動態(tài)控制偽元素樣式

    這篇文章主要介紹了React如何動態(tài)控制偽元素樣式問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論

罗源县| 洞口县| 大厂| 利川市| 山西省| 龙口市| 德化县| 德清县| 紫阳县| 虹口区| 封丘县| 灵山县| 贵州省| 项城市| 北票市| 义乌市| 手游| 古交市| 习水县| 子洲县| 化州市| 赤水市| 平陆县| 平定县| 自贡市| 仙居县| 通辽市| 邢台县| 全南县| 姚安县| 永清县| 合水县| 大竹县| 舞阳县| 台东县| 永川市| 青岛市| 益阳市| 尚义县| 章丘市| 高雄市|