數字滾動原生js的三種方式 – JS筆記

    JS實現的數字滾動方式

    控制好數字的滾動速度,更能給人以震撼和耳目一新的感覺。推薦使用最后一個方法。

    原文來源:詳情

    讓數字滾動的效果簡單用計時器setInterval就能輕易的實現,例如:

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    	</head>
    	<body>
    		<h1 id="numBox" ></h1>
    	</body>
    	<script type="text/javascript">
    		function numRunFun(num, maxNum){
    			var numBox = document.getElementById("numBox");
    			var num = num;
    			var maxNum = maxNum;
    			var timer = setInterval(function(){
    				num++; // 調節速度
    				if(num >= maxNum){
    					numBox.innerHTML = maxNum;
    					clearInterval(timer);
    				} else {
    					numBox.innerHTML = ~~(num);
    				}
    			},100); // 也可以調節速度
    		}
    		
    		// 運行 
    		 numRunFun(0, 10);
    	</script>
    </html>
    • 對于setInterval的缺點要從瀏覽器的的進程說起了
    • 對于setInterval和setTimeout對瀏覽器的影響

    優化一

    對于setInterval的缺點,所以要用setTimeout來模擬setInterval

    演示

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    	</head>
    	<body>
    		<h1 id="numId"></h1>
    	</body>
    	<script type="text/javascript">
    		/**
    		 * 數字滾動
    		 * @param {Object} num
    		 * @param {Object} maxNum
    		 */
    		function numRunFun(num, maxNum) {		
    			var num = num;
    			var maxNum = maxNum;
    			var numId = document.getElementById("numId");
    			// 利用setTimeout模擬Interval
    			function numSlideFun(){
    				num++; // 調節速度 可以小數
    				if(num >= maxNum){
    					numId.innerHTML = maxNum;
    					return;
    				}else{
    					numId.innerHTML = ~~(num);
    					setTimeout(function(){	// 利用setTimeout模擬setInterval				
    						return numSlideFun();
    					},100);// 也可以調節速度				
    				}
    			}
    			numSlideFun();
    		}
    		// 運行
    		numRunFun(0, 10);
    	</script>
    </html>
    

    對于H5有了新的解決方案 window.requestAnimationFrame() 方法,為js動畫的首選

    優化二(推薦)

    演示:

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    	</head>
    	<body>
    		<h1 id="num" ></h1>
    	</body>
    	<script type="text/javascript">
    		var numBox = document.getElementById('num');
    		/**
    		 * 數字滾動
    		 * @param {Object} num 		開始值
    		 * @param {Object} maxNum	最大值,最終展示的值
    		 */
    		function numRunFun(num,maxNum){
    			var numText = num;
    			var golb; // 為了清除requestAnimationFrame
    			function numSlideFun(){
    				numText+=1; // 速度的計算可以為小數
    				if(numText >= maxNum){
    					numText = maxNum;	
    					cancelAnimationFrame(golb);
    				}else {
    					golb = requestAnimationFrame(numSlideFun);
    				}
    				numBox.innerHTML = ~~(numText)
    				
    			}
    			numSlideFun();
    		}
    		// 運行
    		numRunFun(0,10)
    	</script>
    </html>
    

    給TA贊賞
    共{{data.count}}人
    人已贊賞
    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    ?
    購物車
    優惠劵
    搜索
    主站蜘蛛池模板: 国产一区二区三区韩国女主播| 欧洲精品码一区二区三区免费看| 中文字幕一区视频| 久久99国产精品一区二区| 日韩精品人妻av一区二区三区| 中文字幕久久亚洲一区| 精品视频无码一区二区三区| 国产自产对白一区| 亚洲A∨精品一区二区三区| 亲子乱av一区二区三区| 久久久久人妻一区二区三区| 在线观看国产一区亚洲bd| 国产精品毛片一区二区| 色窝窝无码一区二区三区成人网站 | 无码少妇一区二区性色AV| 精品一区二区三区四区在线播放| 国产成人无码aa精品一区| 寂寞一区在线观看| 国产aⅴ一区二区| 精品无码AV一区二区三区不卡| 国产人妖视频一区在线观看| 中文字幕一区二区三区有限公司 | 99精品国产高清一区二区三区 | 成人精品视频一区二区三区尤物| 91国在线啪精品一区| 国产成人精品一区二三区熟女| 少妇激情一区二区三区视频 | 亚洲中文字幕无码一区二区三区 | 久久久久成人精品一区二区| 在线免费视频一区二区| 国产成人一区二区三区视频免费| 日韩一区二区三区在线| 在线视频一区二区三区| 日韩制服国产精品一区| 国产精品美女一区二区| 国产伦精品一区二区三区女| 中文字幕人妻丝袜乱一区三区| 大帝AV在线一区二区三区| 亚洲AV无一区二区三区久久| 无码人妻精品一区二区蜜桃百度 | 一区二区三区精品高清视频免费在线播放 |