數字滾動原生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 反饋,我們將盡快處理。
    ?
    購物車
    優惠劵
    搜索
    主站蜘蛛池模板: 精品久久久久久中文字幕一区| 黑巨人与欧美精品一区| 国内精品一区二区三区在线观看| 亚洲国产日韩一区高清在线| 秋霞午夜一区二区| 亚洲熟女少妇一区二区| 国偷自产av一区二区三区| 精品日产一区二区三区手机| 91视频一区二区| 波多野结衣一区在线观看| 中文字幕在线观看一区二区| 久久精品国产一区二区三 | 亚洲AV本道一区二区三区四区| 精品一区二区三区自拍图片区| 久久精品成人一区二区三区| 日本精品一区二区久久久| 亚洲伦理一区二区| 福利一区福利二区| 在线免费视频一区| 亚洲国产国产综合一区首页| 日韩精品午夜视频一区二区三区| 中文字幕一区二区三区精华液| 亚洲字幕AV一区二区三区四区| 国产天堂一区二区综合| 国产AV一区二区精品凹凸| 中文字幕精品一区二区| 中文字幕精品一区二区三区视频| 无码国产精品一区二区免费式直播 | 任你躁国语自产一区在| 在线观看午夜亚洲一区| 亚洲AV永久无码精品一区二区国产 | 国产一区二区三区在线2021| 国产一区二区精品在线观看| 中文字幕一区二区人妻| 亚洲爽爽一区二区三区| 91精品一区二区三区久久久久 | 亚洲欧洲一区二区| 国产精品无码一区二区三区电影 | 日本一区二区高清不卡| 日韩一区二区三区电影在线观看| 色一情一乱一伦一区二区三欧美 |