【前端开发】】ES6属性promise封装js动画

时间:2023-03-09 01:31:21
【前端开发】】ES6属性promise封装js动画

如下是我写的demo源码:

可以直接复制用浏览器打开看到效果哦;
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
#box{
width: 50px;
height: 50px;
background: red;
position: absolute;
left: 0;
top: 0;
}
</style>
</head>
<body>
<div id="box"></div>
<script type="text/javascript">
//利用es6 new Promise
function movePromise(obj,attr,target,duration){
return new Promise((res,rej)=>{
var b = parseInt(getComputedStyle(obj)[attr]);
var c= target - b;
var d = duration;
var temp = new Date().getTime();
var timer = setInterval(function(){
var t = new Date().getTime()-temp;
if(t>=d){
clearInterval(timer);
t= d;
}
var v = c/d*t + b;
obj.style[attr] = v+'px';
if(t===d){
res()
}
},20)
})
}
//用Promise封装后可以无限加动画运动轨迹,代码简洁
movePromise(box,"width",200,500)
.then(()=>movePromise(box,"left",300,100))
.then(()=>movePromise(box,"top",300,100))
.then(()=>movePromise(box,"height",300,100))
.then(()=>movePromise(box,"top",100,300))
.then(()=>movePromise(box,"top",200,300))
.then(()=>movePromise(box,"top",150,300))
</script>
</body>
</html>

如上源码动画轨迹:

向右移动---向下移动---变高---向上移动--向下移动---向上移动 (移动时间可自己控制)

【前端开发】】ES6属性promise封装js动画