ホームページ  >  記事  >  ウェブフロントエンド  >  jsイージングアニメーションのカプセル化のソースコードは何ですか? (コード例)

jsイージングアニメーションのカプセル化のソースコードは何ですか? (コード例)

云罗郡主
云罗郡主転載
2018-10-19 14:17:032488ブラウズ

この記事の内容は、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 中国語 Web サイトに注目してください。

以上がjsイージングアニメーションのカプセル化のソースコードは何ですか? (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。