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

基于JS實現(xiàn)數(shù)字動態(tài)變化顯示效果附源碼

 更新時間:2019年07月18日 09:36:22   作者:三人行工作室  
我們經(jīng)常看到液晶電子表樣式,數(shù)字動態(tài)顯示,動態(tài)變化的在指定元素內(nèi)顯示數(shù)字。怎么實現(xiàn)效果呢?下面小編給大家?guī)砹嘶贘S實現(xiàn)數(shù)字動態(tài)變化顯示效果 ,感興趣的朋友一起看看吧

先給大家展示下效果,感覺不錯,可以參考實現(xiàn)代碼,文末附有源碼哦。

1.目標(biāo)

以液晶電子表樣式,動態(tài)變化的在指定元素內(nèi)顯示數(shù)字。

目標(biāo)關(guān)鍵詞:動態(tài)變化(定時器),指定元素(DOM元素ID),數(shù)字(number)
效果:多個頁面元素中,均以動態(tài)效果顯示不同的數(shù)字,可正可負(fù)。并動態(tài)改變至少一個元素內(nèi)的數(shù)據(jù)。

2.基本原理

(1) 液晶電子表樣式,找一種液晶電子表字體即可,無須使用別的繪制技巧。
 (2) 動態(tài)變化則通過使用定時器任務(wù)來完成,動態(tài)顯示要確保變化足夠的時長,因此,步長需要根據(jù)變化量來進(jìn)行計算,本文默認(rèn)變化頻率為 50 毫秒一次,動態(tài)過程 2 秒(即 2000 毫秒),則變化次數(shù)為 40 次,因此步長為變化量除以 40 得到。

其余則均為規(guī)則約束與控制,如支持多元素隔離,動態(tài)變化的結(jié)束條件,步長計算的方向與時長控制等。

3.步步實現(xiàn)

3.1下載字體定義字體名稱

最后提供的源碼會包含字體文件。在css中定義字體名稱以便樣式引用。

@font-face {
 font-family: LEDFont;
 src: url("./UnidreamLED.ttf"); 
}

接下來定義顯示數(shù)字的元素樣式,其中便使用到剛定義的字體名稱 LEDFont。

.dynanum{
 font-family: LEDFont;
 font-size: 48px;
 color:red;
 padding:10px;
 margin:10px;
 display:inline-block;
 width:200px;
 text-align:right;
 border:1px solid #bbbbff;
}

3.2接口定義

使用者能提供的就是有顯示的 DOM元素ID,和要顯示的數(shù)值,那這里向外提供的接口方法就出來了,形如:function (elementId, number)。

3.3支持多元素操作

為了支持多元素的簡易操作,這里定義DOM元素ID與對象的映射變量。

var DynamicNumber = {};
DynamicNumber.NumberList = {};

3.4繪制的實現(xiàn)

直接代碼說話。嗯,這里說明一下重點(diǎn)。對于實際繪制的對象,接口中以匿名函數(shù)的方式創(chuàng)建,在首次涉及到某DOM元素ID時進(jìn)行創(chuàng)建。如果已經(jīng)創(chuàng)建,則直接調(diào)用 render 方法,調(diào)用之前,除了設(shè)置新的目標(biāo)數(shù)值,還會清除步長 step,表示需要重新計算步長,當(dāng)然這些都是封裝在接口內(nèi)部,調(diào)用者不需要關(guān)心。

對于繪制方法 render,它所完成的是一步變化的繪制,期間進(jìn)行結(jié)束條件的判斷,并在 step 為 0 時進(jìn)行步長的首次計算工作,最后再使用 setTimeout 啟動下一步的定時任務(wù)。

詳細(xì)代碼及注釋如下,歡迎留言交流。

/**
 * 在指定的 DOM 元素中動態(tài)顯示數(shù)值
 * 作者:triplestudio@sina.com
 *
 * @param elementId :  DOM 元素ID
 * @param number  :  數(shù)值
 */
DynamicNumber.show = function (elementId, number) {
 // 1. 已建立過對象直接調(diào)用
 var dynaNum = this.NumberList[elementId];
 if (dynaNum) {
  dynaNum.step = 0;
  dynaNum.desNumber = number;
  dynaNum.render();
  return;
 }
 // 2. 創(chuàng)建動態(tài)數(shù)字繪制對象
 dynaNum = new function (_elementId) {
  this.elementId = _elementId;
  this.preNumber = 0; // 變化過程值
  this.desNumber = 0; // 目標(biāo)數(shù)值,最終顯示值
  this.step = 0;  // 變化步長,支持正向反向
  // 繪制過程
  this.render = function () {
   // (1)結(jié)束條件
   if (this.preNumber == this.desNumber) {
    this.step = 0;
    return;
   }
   // (2)步長設(shè)置(計劃 2 秒完成 40*50=2000)
   if (this.step == 0) {
    this.step = Math.round((this.desNumber - this.preNumber) / 40);
    if (this.step == 0) this.step = (this.desNumber - this.preNumber > 0) ? 1 : -1;
   }
   // (3)走一步
   this.preNumber += this.step;
   if (this.step < 0) {
    if (this.preNumber < this.desNumber) this.preNumber = this.desNumber;
   } else {
    if (this.preNumber > this.desNumber) this.preNumber = this.desNumber;
   }
   // (4)顯示
   document.getElementById(this.elementId).innerHTML = this.preNumber;
   // (5)每秒繪制 20 次(非精確值)
   var _this = this;
   setTimeout(function () { _this.render(); }, 50);
  };
 } (elementId);
 // 3. 登記綁定元素ID 
 DynamicNumber.NumberList[elementId] = dynaNum;
 // 4. 調(diào)用繪制
 dynaNum.step = 0;
 dynaNum.desNumber = number;
 dynaNum.render();
};

4.使用方式

如接口所定義,使用者只需要關(guān)心DOM元素ID與數(shù)值即可。這里,我們再用一個定時器,每5秒鐘改變一個數(shù)值來看看值變化時的動態(tài)效果。

DynamicNumber.show("num1", 128);
DynamicNumber.show("num2", 12345);
DynamicNumber.show("num3", -8769);
DynamicNumber.show("num4", 987102);
DynamicNumber.show("num5", -30);
// 每 5 秒把 num1 中的數(shù)值改變
setInterval(function () { 
 DynamicNumber.show("num1", DynamicNumber.NumberList["num1"].desNumber + 300);
}, 5000);

源碼下載:

https://github.com/triplestudio/helloworld/tree/master/dynamic_number?from=singlemessage&isappinstalled=0

總結(jié)

以上所述是小編給大家介紹的基于JS實現(xiàn)數(shù)字動態(tài)變化顯示效果 ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • Canvas實現(xiàn)動態(tài)的雪花效果

    Canvas實現(xiàn)動態(tài)的雪花效果

    本文主要分享Canvas實現(xiàn)動態(tài)的雪花效果的示例代碼。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • vue使用vue-quill-editor富文本編輯器且將圖片上傳到服務(wù)器的功能

    vue使用vue-quill-editor富文本編輯器且將圖片上傳到服務(wù)器的功能

    這篇文章主要介紹了vue使用vue-quill-editor富文本編輯器且將圖片上傳到服務(wù)器的功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 微信小程序?qū)崙?zhàn)之雙人五子棋游戲是實現(xiàn)

    微信小程序?qū)崙?zhàn)之雙人五子棋游戲是實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了如何利用微信小程序?qū)崿F(xiàn)雙人五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • JS 終止執(zhí)行的實現(xiàn)方法

    JS 終止執(zhí)行的實現(xiàn)方法

    下面小編就為大家?guī)硪黄狫S 終止執(zhí)行的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起 小編過來看看吧
    2016-11-11
  • 如何使用JavaScript獲取word的內(nèi)容

    如何使用JavaScript獲取word的內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了如何使用JavaScript獲取word的內(nèi)容,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • Flexigrid在IE下不顯示數(shù)據(jù)的有效處理方法

    Flexigrid在IE下不顯示數(shù)據(jù)的有效處理方法

    Flexigrid在IE下不顯示數(shù)據(jù)的處理方法是:指定一下Ajax請求數(shù)據(jù)的方式為Get方式,遇到此問題的朋友可以參考下
    2014-09-09
  • 微信小程序表單驗證WxValidate的使用

    微信小程序表單驗證WxValidate的使用

    這篇文章主要介紹了微信小程序表單驗證WxValidate的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 原生JS 實現(xiàn)的input輸入時表格過濾操作示例

    原生JS 實現(xiàn)的input輸入時表格過濾操作示例

    這篇文章主要介紹了原生JS 實現(xiàn)的input輸入時表格過濾操作,結(jié)合實例形式分析了JavaScript基于頁面元素遍歷、運(yùn)算、判斷實現(xiàn)的表格過濾相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • JavaScript Typescript基礎(chǔ)使用教程

    JavaScript Typescript基礎(chǔ)使用教程

    TypeScript是Microsoft(微軟)開發(fā)的一種開源編程語言,它充分利用了JavaScript原有的對象模型,并在此基礎(chǔ)上進(jìn)行了擴(kuò)充,TypeScript設(shè)計目標(biāo)是開發(fā)大型應(yīng)用,它可以編譯成純JavaScript,編譯出來的JavaScript可以運(yùn)行在任何一種JS運(yùn)行環(huán)境中
    2022-12-12
  • ES6?class類實現(xiàn)繼承實例詳解

    ES6?class類實現(xiàn)繼承實例詳解

    傳統(tǒng)的javascript中只有對象,沒有類的概念,下面這篇文章主要給大家介紹了關(guān)于ES6?class類實現(xiàn)繼承的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10

最新評論

玉屏| 宣恩县| 广宗县| 兴文县| 武隆县| 游戏| 慈溪市| 运城市| 广水市| 汉源县| 贺州市| 葫芦岛市| 溧阳市| 兴义市| 遂川县| 三都| 阿尔山市| 宁陵县| 密云县| 太原市| 东安县| 定南县| 普陀区| 新巴尔虎左旗| 鄢陵县| 洪湖市| 宁阳县| 澄迈县| 夏邑县| 行唐县| 永川市| 万盛区| 宝清县| 马尔康县| 长沙县| 怀安县| 南郑县| 德保县| 抚顺市| 江孜县| 兖州市|