1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| $(() => { let num = 1000; getRem(1920, 100); initAnimation({ start: num }); setInterval(() => { num += Math.floor(Math.random()*100); if(num >= 100000)num = 1000; initAnimation({ start: num }); }, 2000); })
function getRem(pwidth, prem) { var html = document.getElementsByTagName("html")[0]; var oWidth = document.body.clientWidth || document.documentElement.clientWidth; html.style.fontSize = oWidth / pwidth * prem + "px"; } function initAnimation(opt) { var num = opt.start || 0; var elm = $(opt.el || '#numBox'); var old = elm.attr("data-num") || 0; var format_num = formatMoney(num); var format_old = formatMoney(old); var arr = format_num.split(''); var old_arr = format_old.split(''); if (elm.children().length == 0) $('<div class="box-item"><span>0123456789</span></div>').appendTo(elm); if (arr.length !== 0) { if (arr.length > old_arr.length) { var range = arr.length - old_arr.length; var allArr = arr.concat(old_arr); var clipArr = allArr.slice(0, allArr.length - old_arr.length * 2); for (var i = clipArr.length - 1; i > -1; i--) { var item = clipArr[i]; if (!isNaN(item)) { $('<div class="box-item"><span>0123456789</span></div>').prependTo($(elm)); } else { $('<div class="box-item-symbol"></div>').prependTo($(elm)); } } } else if (arr.length < old_arr.length) { var range = old_arr.length - arr.length; var allArr = old_arr.concat(arr); var clipArr = allArr.slice(0, allArr.length - arr.length * 2); clipArr.forEach(function (e, i) { $(elm).children().eq(0).remove(); }) giveNumAnimation(num); } else { giveNumAnimation(num); } elm.attr({ "data-num": num, "data-old": old }); giveNumAnimation(num); } }
function giveNumAnimation(num) { var num = num || 0; var numberArr = num + ''.split(''); const numberItems = $(".box-item"); numberItems.each(function (i, e) { $(e).children('span').css({ transform: "translate(-50%, -" + numberArr[i] * 10 + "%)", }) }) } function formatMoney(number, decimals = 0, decPoint = '.', thousandsSep = ',') { decimals = decimals || 0, decPoint = decPoint || '.', thousandsSep = thousandsSep || ','; number = (number + "").replace(/[^0-9+-Ee.]/g, "") let n = !isFinite(+number) ? 0 : +number let prec = !isFinite(+decimals) ? 0 : Math.abs(decimals) let sep = (typeof thousandsSep === "undefined") ? "," : thousandsSep let dec = (typeof decPoint === "undefined") ? "." : decPoint let s = "" let toFixedFix = function (n, prec) { let k = Math.pow(10, prec) return "" + Math.ceil(n * k) / k } s = (prec ? toFixedFix(n, prec) : "" + Math.round(n)).split(".") let re = /(-?\d+)(\d{3})/ while (re.test(s[0])) { s[0] = s[0].replace(re, "$1" + sep + "$2") } if ((s[1] || "").length < prec) { s[1] = s[1] || "" s[1] += new Array(prec - s[1].length + 1).join("0") } return s.join(dec) }
|