老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)

JavaScript怎么實現(xiàn)余額數(shù)字滾動效果

這篇文章主要介紹“JavaScript怎么實現(xiàn)余額數(shù)字滾動效果”,在日常操作中,相信很多人在JavaScript怎么實現(xiàn)余額數(shù)字滾動效果問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JavaScript怎么實現(xiàn)余額數(shù)字滾動效果”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

站在用戶的角度思考問題,與客戶深入溝通,找到和平網(wǎng)站設(shè)計與和平網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:做網(wǎng)站、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋和平地區(qū)。

1.實現(xiàn)背景

上周在一個完成任務(wù)領(lǐng)取紅包的活動需求中,需要實現(xiàn)一個用戶點擊按鈕彈出領(lǐng)取紅包彈窗后,在關(guān) 閉彈窗返回原來的頁面時,頁面余額數(shù)字部分要展示一個每一位數(shù)字滾動后的效果。

因為之前沒做過這樣的效果,一開始也不知道要如何實現(xiàn),本來想在GitHub上找一下相關(guān)的庫,看到一個最高star的庫,但發(fā)現(xiàn)它是依賴jQuery的,而且不可以npm包引入。感覺就很沒有必要,本來項目是react框架的,就是要盡量少的操作DOM,為了解決這個滾動就要引入jQuery,感覺不太合適。所以我決定還是自己實現(xiàn),先看了一下別人的思路,然后自己再去實現(xiàn)。

2.實現(xiàn)思路

其實就是將傳入的帶滾動的n位數(shù)字拆分成每一個要滾動的數(shù),然后動態(tài)的創(chuàng)建裝著滾動到每一位相應(yīng)數(shù)字的容器,然后放入傳入的目標(biāo)容器中。滾動到每一位相應(yīng)的數(shù)字的實現(xiàn)可以通過動態(tài)創(chuàng)建從0到相應(yīng)數(shù)字的間隔數(shù)的div,div的內(nèi)容分別為對應(yīng)的數(shù)字,就像一個豎直寫著從0-n的長紙條,然后拉著它在指定時間內(nèi)從0上拉到目標(biāo)數(shù)字。

3.實現(xiàn)過程

既然要封裝,還是寫成class的形式吧,話不多說,直接上代碼吧

/**

 * 實現(xiàn)數(shù)字滾動的效果的類

 */

class DigitScroll {

  constructor(options) {

    //獲取容器的DOM,沒有則拋出錯誤

    this.container = document.querySelector(options.container);

    if (!this.container) {

      throw Error("no container");

    }

    this.container.style.overflow = "hidden";

    this.container.style.display = "flex";

    //可視容器高度 也是滾動間隔距離,容器要設(shè)置高度,否則默認30px

    this.rollHeight = parseInt(getComputedStyle(this.container).height) || 30;

    this.container.style.height = this.rollHeight + "px";

  }

  roll(num) {

    // 將傳入的要滾動的數(shù)字拆分后初始化每一位數(shù)字的容器

    this.initDigitEle(num);

    const numEles = this.container.querySelectorAll(".single-num");

    // 遍歷生成每一位數(shù)字的滾動隊列,如滾動到7,則生成內(nèi)容為0,1,2,3,4,5,6,7的7個div,用于滾動動畫

    [...numEles].forEach((numEle, index) => {

      const curNum = 0;

      let targetNum = Number(this.numberArr[index]);

      if (curNum >= targetNum) {

        targetNum = targetNum + 10;

      }

      let cirNum = curNum;

      // 文檔碎片,拼湊好后一次性插入節(jié)點中

      const fragment = document.createDocumentFragment();

      // 生成從0到目標(biāo)數(shù)字對應(yīng)的div

      while (targetNum >= cirNum) {

        const ele = document.createElement("div");

        ele.innerHTML = cirNum % 10;

        cirNum++;

        fragment.appendChild(ele);

      }

      numEle.innerHTML = "";

      numEle.appendChild(fragment);

      //重置位置

      numEle.style.cssText +=

        "-webkit-transition-duration:0s;-webkit-transform:translateY(0)";

      setTimeout(() => {

        numEle.style.cssText += ——-webkit-transition-duration:1s;-webkit-transform:translateY(${

          -(targetNum - curNum) * this.rollHeight

        }px);——;

      }, 50);

    });

  }

  // 初始化容器

  initDigitEle(num) {

    // 數(shù)字拆分位數(shù)

    const numArr = num.toString().split("");

    // 文檔碎片,拼湊好后一次性插入節(jié)點中

    const fragment = document.createDocumentFragment();

    numArr.forEach((item) => {

      const el = document.createElement("div");

      // 數(shù)字是要滾動的,非數(shù)字如.是不滾動的

      if (/[0-9]/.test(item)) {

        el.className = "single-num";

        el.style.height = this.rollHeight + "px";

        el.style.lineHeight = this.rollHeight + "px";

      } else {

        el.innerHTML = item;

        el.className = "no-move";

        el.style.verticalAlign = "bottom";

      }

      // el.style.float='left';

      fragment.appendChild(el);

    }, []);

    this.container.innerHTML = "";

    this.container.appendChild(fragment);

    // 存儲滾動的數(shù)字

    this.numberArr = numArr.filter((item) => /[0-9]/.test(item));

  }

}

到此,關(guān)于“JavaScript怎么實現(xiàn)余額數(shù)字滾動效果”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)站名稱:JavaScript怎么實現(xiàn)余額數(shù)字滾動效果
瀏覽路徑:http://www.xueling.net.cn/article/ggighd.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 亚洲AV日韩综合一区尤物 | 韩国日本一区二区三区 | 诱人的飞行韩剧在线观看完整免费 | 成人影院在线视频 | 亚洲一区精品视频在线观看 | 国产亚洲精品久久久久久久 | 久草热这里有精品6 | 禁18在线观看免费网站 | 欧美综合成人网 | 国产在线一二区 | 大地资源影视免费观看 | 国产精品一区二区三区在线观 | 国产福利三区 | 免费无码又爽又刺激A片软件妖精 | 中文字幕免费在线观看 | 国精产品一二二区视菠萝蜜 | 国产有码在线观看 | 草草免费视频 | 日本欧洲乱码伦视频免费 | 好爽好黄好刺激的视频 | 999在线观看精品免费不卡网站 | 国产高潮又爽又刺激的视频 | 国内揄拍国内精品浪潮av | 国农村精品国产自线拍 | 久草资源在线 | 国产精品久久久国产盗摄 | 2020无码专区人妻系列 | 国产美女黄色 | 国产aⅴ无码久久丝袜美腿 国产麻豆精品一区二区 | 国产亚洲AV片在线观看16女人 | 日韩一区精品视频一区二区 | 中文字幕第15页 | 国产高清在线一区二区 | 狠狠噜天天噜日日噜视频跳一跳 | 国产精品一久久香蕉国产线看观看 | 超碰91在线观看 | 精品久久久久国产免费第一页 | 亚洲人精品亚洲人成在线 | 97久久久久久久 | 国产成人精品无码A区在线观看 | 天天爽天天狠久久久综合麻豆 |