數字滾動原生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>
    

    全代碼打造簡潔美觀回到頂部按鈕-Wordpress主題開發

    2019-1-8 9:50:39

    插件

    Dashboard Widgets Suite - 儀表板小部件套件

    2019-11-18 23:02:00

    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    0 條回復 A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 亚洲愉拍一区二区三区| 在线观看日本亚洲一区| 亚洲AV一区二区三区四区| 老鸭窝毛片一区二区三区 | 日本免费精品一区二区三区| 国产精品视频一区二区三区四| 精品国产一区二区三区久久狼| 日本道免费精品一区二区| 亚洲av无码片vr一区二区三区| 精品福利一区二区三| 波多野结衣精品一区二区三区| 久久无码人妻一区二区三区| 国产精品亚洲产品一区二区三区 | 一区二区三区四区视频| 无码人妻精品一区二区蜜桃百度| 亚洲综合一区二区| 日本一区二区三区在线观看| 精品一区二区三区电影| 国产精品熟女视频一区二区| 日韩一区二区视频| 午夜福利一区二区三区高清视频| www亚洲精品少妇裸乳一区二区| 亚洲丰满熟女一区二区哦| 精品深夜AV无码一区二区| 亚洲乱色熟女一区二区三区丝袜| 精品一区二区三区影院在线午夜 | 少妇无码一区二区三区| 中文字幕不卡一区| 亚洲一区二区高清| asmr国产一区在线| 一区二区三区视频免费| 国产成人精品无码一区二区老年人| 亚洲天堂一区二区三区四区| 少妇人妻精品一区二区三区| 国产AV午夜精品一区二区三区| 中文字幕无码一区二区免费| 三上悠亚日韩精品一区在线| 国产成人精品a视频一区| 国产韩国精品一区二区三区| 日韩少妇无码一区二区三区| 激情综合丝袜美女一区二区|