안녕하세요.
jquery animate 함수를 이용하여 이미지를 움직이려고 했더니, 이미지가 포물선을 그리며 움직이는게 힘들어서,
구글 검색을 통해 찾은 parabola.js 를 이용하여 포물선으로 이미지를 움직였습니다.
Parabola Trajectory Examples 예제를 이용 하였습니다(https://github.com/guins/parabolajs)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Parabola Trajectory Examples</title>
<style type="text/css">
html, body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
.dot {
position: absolute;
left: 0px;
top: 500px;
}
.scaleAnimation { // onFinish에 해당 css를 추가
animation: myScale .7s forwards;
-webkit-animation myScale .7s forwards;
}
@keyframes myScale //이미지가 마지막에 도달하면 해당 css를 통해 작아젓다 커졋다 효과를 부여.
{
from {transform: scale(1);}
20% {transform: scale(1.3);}
65% {transform: scale(0.6);}
90% {transform: scale(1.4);}
to {transform: scale(0);}
}
@-webkit-keyframes myScale
{
from {transform: scale(1);}
20% {transform: scale(1.3);}
65% {transform: scale(0.6);}
90% {transform: scale(1.2);}
to {transform: scale(0);}
}
</style>
<script type="text/javascript" src="parabola.js"></script>
</head>
<body>
<button>Run</button>
<i class="dot"><img id="img_test" src="Star_1.png" style="width:30px"/></i> // dog class 안에 이미지가 포물선으로 날아갑니다.
<script type="text/javascript">
var btn = document.querySelector('button');
var target = document.querySelector('.dot');
var mini = 30;
var start = 1;
var parabola = new Parabola({
startPos: {
left: 0,
top: 500
},
endPos: {
left: 500,
top: 0
},
onStep (pos) {
if((start % 5) == 0){ // 이부분은 기존 이미지를 포물선으로 날아가면 작아지게 만드려고 넣었습니다.
mini = mini -1;
img_test.style.width = mini+"px";
}
start++;
target.style.left = pos.left + 'px';
target.style.top = pos.top + 'px';
},
timingFunction: 'easeInOut',
onFinish (pos) {
target.classList.add('scaleAnimation');
}
});
// parabola.start();
btn.addEventListener('click', function () {
target.classList.remove('scaleAnimation');
parabola.start();
}, false);
</script>
</body>
</html>
해당 예제에서 제가 필요한 부분만 바꿔서 적용했습니다.
^_^