<problem>
기존에 html상에 존재하던 개별 li를 targeting했던 것을
>> data 파일로 뿌려 만들면서, dockMenuList("#dockMenu ul li")로 접근할 수 없어 애니메이션 효과가 작동하지 않음.
<solve point>
- ul > li 이벤트 위임
- 먼저 함수 한 번 호출하기 (target 대상이 존재하지 않는 상태에서 효과를 적용시킬 수 없다!)
<process>
1. 데이터 뿌리기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
const dockMenu = $("#dockMenu ul");
$.ajax({ url: "data/stack.json" }).done(function (response) {
console.log(response);
const stacks = response.stacks;
let tempHtml = "";
$.each(stacks, function (idx, item) {
tempHtml += `<li data-txt=${item.title} data-percent=${item.num} data-bg=${item.bg}>
<a href=""><span>${item.title}</span></a>
</li>
`;
});
console.log(tempHtml);
dockMenu.html(tempHtml);
});
|
cs |
2. li 들이 아래로 떨어지는 firstMotion 효과 주기
1) 데이터 뿌려주기를 함수로 묶기 ; makedockMenu() > 먼저 한 번 호출
2) firstMotion 애니메이션 > 함수로 묶기 ; firstMotion()
3) makedockMenu() 안에 firstMotion() 넣기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
const dockMenu = $("#dockMenu ul");
function makeDockMenu() {
$.ajax({ url: "data/stack.json" }).done(function (response) {
...
console.log(tempHtml);
dockMenu.html(tempHtml);
firstMotion();
});
}
...
makeDockMenu();
function firstMotion() {
gsap.from($("#dockMenu ul li"), {
y: -300,
opacity: 0,
duration: 1.5,
ease: "bounce",
stagger: { each: 0.1 },
});
}
|
cs |
3. secondMotion, click part >> 이벤트 위임
- dockMenu에서 가상의 data로 뿌려놓은 li로 접근하여 이벤트 효과를 주기 위해 '위임' 해주기
1
2
3
4
5
6
7
8
9
|
dockMenu.on("mouseenter", "li", function () {
...
});
dockMenu.on("mouseleave", "li", function () {
...
});
dockMenu.on("click", "li", function () {
...
});
|
cs |
4. mouseenter, mouseleave event >> secondMotion() 으로 묶기 /
firstMotion 효과가 끝나고(onComplete) 작동하도록 타이밍 조정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
function firstMotion() {
gsap.from($("#dockMenu ul li"), {
...
onComplete: function () {
// console.log("모션이 끝났습니다.");
secondMotion();
},
});
}
...
function secondMotion() {
dockMenu.on("mouseenter", "li", function () {
...
});
dockMenu.on("mouseleave", "li", function () {
...
});
}
|
cs |
'강의메모' 카테고리의 다른 글
220713 (0) | 2022.07.13 |
---|---|
AngularApp cli 설치 명령문 정리 (0) | 2022.07.11 |
★ 220630 오후강의 process 정리 (0) | 2022.06.30 |
22.0616~0620 (0) | 2022.06.16 |
day 28 (0) | 2022.06.09 |