>  기사  >  웹 프론트엔드  >  js 완화 애니메이션 캡슐화의 소스 코드는 무엇입니까? (코드 예)

js 완화 애니메이션 캡슐화의 소스 코드는 무엇입니까? (코드 예)

云罗郡主
云罗郡主앞으로
2018-10-19 14:17:032501검색

이 기사의 내용은 애니메이션 캡슐화를 완화하는 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 easing animation 패키지 소스코드인가요? (코드 예제) 전체 소개, JavaScript 비디오 튜토리얼에 대해 더 알고 싶다면 PHP 중국어 웹사이트를 주목하세요.

위 내용은 js 완화 애니메이션 캡슐화의 소스 코드는 무엇입니까? (코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제