1. CSS 를 이용하여 기초적인 애니메이션이 가능합니다. 지난 시간에는 가장 기본적인 위치이동을 해봤습니다.
2. 두번째 포스팅 에서는 키프레임을 이용한 CSS 애니메이션을 만들어 봤습니다.
이번에 시도해 볼 CSS애니메이션은 곡선형태로 움직이는 CSS애니메이션 입니다. 아래 이미지와 같이 8자 형태로 움직이는 애니메이션 입니다.
위와 같이 움지이기 위해서는 이미지의 X 포지션과 Y 포지션을 변경하면서 만들 수 있습니다. 그런데 아래 코드를 보면 X포지션과 Y포지션을 300픽셀 씩 이동하게 되는데, 실제 목적지는 우상단 300픽셀 지점이기 때문에, 사실 이대로 움직이게 되면 직선으로 우상단으로 움직이게 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
|
@keyframes yAxis {
50% {
transform: translateY(-300px);
}
}
@keyframes xAxis {
50% {
transform: translateX(300px);
}
}
|
cs |
위 코드에 애니메이션의 실행시간을 조정하는 animation-timing-function 을 추가하면 곡선처럼 움직이게 됩니다. 즉, 애니메이션이 동작하는 시간을 점점 느리게, 또는 점점 빠르게 처럼 변화를 주되, X 와 Y 축을 조금 다르게 설정하는 겁니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
@keyframes yAxis {
50% {
animation-timing-function: cubic-bezier(0.02, 0.01, 0.21, 1);
transform: translateY(-300px);
}
}
@keyframes xAxis {
50% {
animation-timing-function: cubic-bezier(0.3, 0.27, 0.07, 1.64);
transform: translateX(300px);
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<body>
<style>
.demo {
margin-left:500px;
margin-top:500px;
animation: xAxis 2.5s infinite cubic-bezier(0.02, 0.01, 0.21, 1);
}
.demo:after {
content: '';
display: block;
width: 120px;
height: 90px;
background-image:url(http://www.meriqueen-woolmark.com/03_doolyit_image/birdright.jpg);
animation: yAxis 2.5s infinite cubic-bezier(0.3, 0.27, 0.07, 1.64);
}
@keyframes yAxis {
50% {
animation-timing-function: cubic-bezier(0.02, 0.01, 0.21, 1);
transform: translateY(-300px);
}
}
@keyframes xAxis {
50% {
animation-timing-function: cubic-bezier(0.3, 0.27, 0.07, 1.64);
transform: translateX(300px);
}
}
</style>
<div class="demo"></div>
</body>
</html>
|
cs |
하지만, 위와 같은 방식은 애니메이션의 속도를 조정하거나 곡선을 원하는 대로 만들어 내기가 쉽지않고 계산도 복잡할 수 밖에 없습니다.
jquery 를 이용하면 아주 복잡한 형태의 곡선도 단 몇줄의 코드로도 자유롭게 만들어 낼 수 있습니다
먼저 상단부분에 jquery를 포함시킵니다
1
|
<script src="http://yui.yahooapis.com/3.18.1/build/yui/yui-min.js"></script>
|
cs |
아래코드의 demo 는 애니메이션이 적용될 DIV로 새 이미지를 포함하고 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<div id="demo" style="margin-left:100px;margin-top:300px">
<img src="http://www.meriqueen-woolmark.com/03_doolyit_image/birdright.jpg">
</div>
<script type="text/javascript">
YUI().use('anim', function(Y) {
demoA = Y.one('#demo'); // The animated element
var anim = new Y.Anim({
node: demoA,
duration: 2.5,
easing: Y.Easing.easeOut
});
var startAnim = function(e){
demoA.setStyles({'left': 0, 'top': 0});
anim.set('to', {curve: [ [555,446], [272,-79], [720,71] ]});
anim.run();
};
Y.one('#demo').on('click', startAnim);
startAnim();
});
</script>
|
cs |
그후에, anim 객체를 생성하고 anim.set() 으로 위치를 지정한 후에 anim.run()으로 애니메이션을 실행시키면 됩니다.
곡선을 만드는 방법
위 코드에서 중요한 부분이 아래 코드 부분인데요, 빨간색으로 표시된 대괄호에 있는 코드번호가 바로 곡선의 패스를 결정하는 부분입니다.
anim.set('to', {curve: [ [555,446], [272,-79], [720,71] ]});
아래 링크에 가면 해당 jQuery 제공사이트에서 곡선을 직접 만들어 볼 수 있는 예제를 만들어 두었습니다. 아래 그림에서와 같이 0, 1, 2, 3 의 각 원형노드를 움직이면서 자유롭게 곡선을 만들 수 있습니다.
원하는 곡선을 만든 후에, 위 그김의 빨간색 동그라미 부분의 숫자를 anim.set 함수 내로 적용하기만 하면 됩니다.
jQuery제공 사이트에 가면 곡선을 다양하게 구성하고 속도를 조절하는 여러가지 옵션을 제공하고 있으며, 곡선 외에도 다양한 애니메이션을 제공하고 있습니다.
css버튼 이쁘게 꾸미기, 애니메이션 효과주기 (0) | 2022.08.05 |
---|---|
CSS 그라데이션 적용하기 ... linear-gradient (0) | 2020.12.02 |
CSS 애니메이션, 키프레임으로 하늘을 나는 새 만들어보기 CSS Animation Flying Bird (2) | 2020.02.18 |
CSS 애니메이션 따라하기, 움직이는 고양이 CSS Animation (0) | 2020.02.17 |
CSS 입력폼 크기, 정렬, 크롬/익스플로러/엣지 동일하게 표현하기 (0) | 2020.02.16 |
댓글 영역