數字滾動原生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怡红院一区二区三区| 乱码人妻一区二区三区| 国产精品一区二区久久精品| 激情内射日本一区二区三区| 无码一区二区三区亚洲人妻| 高清精品一区二区三区一区| 亚洲乱码一区av春药高潮 | 亚洲国产精品综合一区在线| 亚洲日本一区二区一本一道| 老鸭窝毛片一区二区三区| 日本一区二区三区日本免费| 3D动漫精品一区二区三区| 日本一区二区三区在线观看| 熟女性饥渴一区二区三区| 亚洲爽爽一区二区三区| 国产一区高清视频| 亚洲av色香蕉一区二区三区蜜桃 | 久久一区二区三区99| 精品人妻一区二区三区四区| 日本一区免费电影| 美女视频一区二区三区| 免费观看日本污污ww网站一区| 国产在线无码视频一区| 国产一区二区三区樱花动漫| 精品一区二区三区中文| 一区二区国产在线观看| 小泽玛丽无码视频一区| 国产日韩AV免费无码一区二区三区| 日韩精品无码Av一区二区| 亚洲欧洲一区二区三区| 在线观看国产区亚洲一区成人 | 在线精品一区二区三区| 欧美激情一区二区三区成人| 日韩AV片无码一区二区不卡| 无码8090精品久久一区| 国产在线精品一区二区夜色|