亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

基于JS實現數字動態變化顯示效果附源碼

2019-11-19 11:10:22
字體:
來源:轉載
供稿:網友

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

1.目標

以液晶電子表樣式,動態變化的在指定元素內顯示數字。

目標關鍵詞:動態變化(定時器),指定元素(DOM元素ID),數字(number)
效果:多個頁面元素中,均以動態效果顯示不同的數字,可正可負。并動態改變至少一個元素內的數據。

2.基本原理

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

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

3.步步實現

3.1下載字體定義字體名稱

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

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

接下來定義顯示數字的元素樣式,其中便使用到剛定義的字體名稱 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,和要顯示的數值,那這里向外提供的接口方法就出來了,形如:function (elementId, number)。

3.3支持多元素操作

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

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

3.4繪制的實現

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

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

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

/** * 在指定的 DOM 元素中動態顯示數值 * 作者:triplestudio@sina.com * * @param elementId :  DOM 元素ID * @param number  :  數值 */DynamicNumber.show = function (elementId, number) { // 1. 已建立過對象直接調用 var dynaNum = this.NumberList[elementId]; if (dynaNum) {  dynaNum.step = 0;  dynaNum.desNumber = number;  dynaNum.render();  return; } // 2. 創建動態數字繪制對象 dynaNum = new function (_elementId) {  this.elementId = _elementId;  this.preNumber = 0; // 變化過程值  this.desNumber = 0; // 目標數值,最終顯示值  this.step = 0;  // 變化步長,支持正向反向  // 繪制過程  this.render = function () {   // (1)結束條件   if (this.preNumber == this.desNumber) {    this.step = 0;    return;   }   // (2)步長設置(計劃 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. 調用繪制 dynaNum.step = 0; dynaNum.desNumber = number; dynaNum.render();};

4.使用方式

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

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

源碼下載:

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

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久香蕉国产线看观看gif| 亚洲护士老师的毛茸茸最新章节| 亚洲级视频在线观看免费1级| 黑人巨大精品欧美一区二区免费| 久久久精品视频在线观看| 日韩av电影免费观看高清| 亚洲va欧美va在线观看| 国内外成人免费激情在线视频网站| 欧美日韩午夜视频在线观看| 成人a级免费视频| 国产极品jizzhd欧美| 久久久女人电视剧免费播放下载| 91美女片黄在线观看游戏| 久久伊人精品一区二区三区| 亚洲电影免费在线观看| 国产精品视频久| 亚洲美女又黄又爽在线观看| 久久精品国产精品亚洲| 日韩高清电影好看的电视剧电影| 久久九九有精品国产23| 国产欧美日韩亚洲精品| 国内伊人久久久久久网站视频| 色综合久久精品亚洲国产| 中文字幕av日韩| 啊v视频在线一区二区三区| 亚洲欧美日韩国产中文| 国外成人在线直播| 成人国产在线激情| 欧美丰满少妇xxxxx| 精品国产一区二区三区久久狼黑人| 国产亚洲人成a一在线v站| 亚洲综合小说区| 精品av在线播放| 亚洲国产精品免费| 国产精品国产三级国产专播精品人| 国产精品影片在线观看| 欧美成人小视频| 中文字幕日韩欧美在线视频| 久久99久久99精品免观看粉嫩| 成人在线视频网| 日韩视频在线免费| 亚洲美女福利视频网站| 日韩有码在线电影| 久久影视电视剧免费网站| 欧美性xxxx极品hd欧美风情| 91精品国产乱码久久久久久久久| 88xx成人精品| 亚洲一区二区三区在线免费观看| 欧美一级片一区| 孩xxxx性bbbb欧美| 久久精品99久久久香蕉| 欧美电影在线观看高清| 欧美成年人视频网站欧美| 91av在线视频观看| 国产精品亚洲自拍| 国产精品自产拍高潮在线观看| 91天堂在线观看| 国产亚洲精品成人av久久ww| 国产精品你懂得| 麻豆成人在线看| 欧美激情a在线| 精品久久久久久久久久ntr影视| 欧美日韩色婷婷| 亚洲精品一区二三区不卡| 久久人91精品久久久久久不卡| 亚洲精品久久久久久久久| 美女精品视频一区| 黑人巨大精品欧美一区二区一视频| 日本久久亚洲电影| 久久九九精品99国产精品| 欧美高跟鞋交xxxxxhd| 欧美日韩激情视频| 国产亚洲在线播放| 一区二区三区回区在观看免费视频| 亚洲精品少妇网址| 久久精品电影网站| 亚洲精品中文字幕女同| 欧美精品激情视频| 欧美久久精品一级黑人c片| 久久久97精品| 国产精品久久久久久久久久新婚| 欧美中文字幕精品| 亚洲精品久久久久久久久久久久久| 亚洲欧美日韩另类| 国产精品电影网| 国产精品最新在线观看| 国产在线播放91| 国产女同一区二区| 欧美日韩国产丝袜另类| 不卡毛片在线看| 欧美老肥婆性猛交视频| 国产精品网站入口| 国产在线98福利播放视频| 亚洲最大成人免费视频| 日韩中文字幕网址| 欧美精品videosex牲欧美| 中文字幕久精品免费视频| 亚洲精品久久久久久久久久久| 亚洲免费成人av电影| 国产精品久久激情| 日韩极品精品视频免费观看| 91网站免费观看| 国产视频一区在线| 久久久久久久久久久国产| 国产精品一区久久久| 亚洲图中文字幕| 日韩黄在线观看| 久久久久久噜噜噜久久久精品| 久久久成人精品| 久久久免费精品视频| 欧亚精品在线观看| 日韩色av导航| 欧美日韩精品在线| 国产69精品99久久久久久宅男| xxxxx91麻豆| 最近免费中文字幕视频2019| 国产精品免费一区豆花| 成人激情电影一区二区| 亚洲free嫩bbb| 日韩免费在线播放| 欧美电影院免费观看| 亚洲精品在线91| 中文字幕在线看视频国产欧美在线看完整| 欧美在线一区二区三区四| 国产午夜精品一区二区三区| 亚洲社区在线观看| 91夜夜未满十八勿入爽爽影院| 欧美成人精品不卡视频在线观看| 欧美激情一级二级| 久久久久久久久中文字幕| 深夜福利一区二区| 中文字幕欧美亚洲| 一本久久综合亚洲鲁鲁| 亚洲欧美制服第一页| 韩曰欧美视频免费观看| 亚洲高清av在线| 亚洲三级黄色在线观看| 欧美亚洲在线播放| 7777精品久久久久久| 日韩激情av在线播放| 亚洲成人精品视频| 97在线视频国产| 日韩av在线免费观看| 韩国福利视频一区| 在线不卡国产精品| 在线观看日韩www视频免费| 久久人人爽亚洲精品天堂| 欧美精品亚州精品| 国产亚洲在线播放| 日本高清不卡在线| 国外日韩电影在线观看| 日韩精品在线视频| 久久九九有精品国产23| 欧美激情在线观看| 亚洲高清一二三区| 91在线免费看网站| 91久久久精品| 久久久久久这里只有精品| 欧美成aaa人片免费看| 97国产一区二区精品久久呦| 亚洲网站在线看| 日本精品中文字幕| 51ⅴ精品国产91久久久久久| 精品一区二区三区四区|