首頁 > web前端 > js教程 > 主體

js緩動動畫封裝原始碼是什麼? (程式碼實例)

云罗郡主
發布: 2018-10-19 14:17:03
轉載
2498 人瀏覽過

這篇文章帶給大家的內容是關於js緩動動畫封裝原始碼是什麼? (程式碼實例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

js緩動動畫封裝原始碼是什麼? (程式碼實例)

主要用到offsetLeft、Math.ceil、Math.floor、Math.abs。

注意offsetLeft所獲得的的值為四捨五入的style.left的數值,offsetLeft = Math.round(style.left的數值部分)style.left = 369.4px,  取得的offsetLeft 例如= 369。

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>缓动动画</title>
	<style>
		#slow_action {
			width: 100px;
			height: 100px;
			background: pink;
			position: absolute;
		}
	</style>
</head>
<body>
	<button id="btn1">运动到400</button>
	<button id="btn2">运动到0</button>
	<p id="slow_action"></p>
</body>
<script>
	var btn1 = document.getElementById("btn1")
	var btn2 = document.getElementById("btn2")
	var p = document.getElementById("slow_action")
	/**
	* 动画原理 = 盒子位置 + 步长(步长越来越小)
    * 盒子位置 = 盒子本身的位置 + (目标位置 - 盒子本身位置)/10
	*/
	btn1.onclick = function () {
		fn(p,400)
	}
	btn2.onclick = function () {
		fn(p,0)
	}
	function fn(ele, target) {
		clearInterval(ele.timer);
		ele.timer = setInterval(function () {
			// var target = 400;
			//最后10像素都是1px向目标位置移动 最后到达指定位置
			var step = (target - ele.offsetLeft)/10;
			//差值大于10的时候向上取整 小于0的时候向下取整
			step = step > 0 ? Math.ceil(step) : Math.floor(step)
			ele.style.left = ele.offsetLeft + step + "px";

			//检测定时器是否停止
			console.log(1)
			//跳出条件 目标位置-当前位置的绝对值,小于步长
			if(Math.abs(target - ele.offsetLeft) < Math.abs(step)) {
				ele.style.left = target + "px";
				clearInterval(ele.timer)
			}
		}, 30);
	}
</script>
</html>
登入後複製

 以上就是對js緩動動畫封裝原始碼是什麼? (程式碼實例)的全部介紹,如果您想了解更多有關JavaScript影片教學,請關注PHP中文網。

以上是js緩動動畫封裝原始碼是什麼? (程式碼實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板