inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

애플 웹사이트 인터랙션 클론!

스크롤 애니메이션 구현 4

코드 구조에 관하여 질문드립니다.

183

Hwi Kwon

작성한 질문수 8

0

javascript에 익숙하지 않아서 코드 구조에 관하여 질문드립니다. 

yOffset, prevScrollHeight, currentScene 같은 경우 arrow function 내부에 선언한 뒤에 

다른 함수들에서 인자로 받지 않고 전역 변수처럼 가져다가 쓰고 있는데 javascript에서 이런 방식으로 많이 코드를 작성하나요?

+ ES6에서 class 개념도 추가되었다고 하는데 많이 사용하시는 편인가요? 

HTML/CSS 웹 디자인 javascript svg 인터랙티브-웹 클론코딩

답변 1

2

1분코딩

뭘 만드느냐에 따라 다른데요, 예제의 형태는 로직을 짜는 것 외에 특별히 신경쓸게 없도록 "가장 기본적인" 형태로 작성되었다고 생각하시면 될 것 같습니다^^
다른 라이브러리나 프레임워크 안에서 사용하는 경우나 이 애플리케이션 외에 다른 요소들과 결합이 되어야 한다면 그것에 맞게 변형해야하는 경우가 있을 수도 있고요.

아래처럼 변수들을 따로 객체에 담아 정리하기도 합니다.
아래는 info라는 이름으로 만들었는데, configMap(설정에 관련된 변수 세트), stateMap(상태에 관련된 변수 세트) 이런 식으로 용도별 변수를 묶어줄 객체를 각각 만들어 세트로 묶기도 하고요.

(() => {
    const info = {
        yOffset: 0,
        prevScrollHeight: 0,
        currentScene: 0,
    };

    function scrollLoop() {
        info.yOffset = window.pageYOffset;
    }
})();

ES6 class는 필요한 경우에 많이 사용합니다.
이 예제는 인스턴스를 만들어 여러개 사용하는게 아니라서, 굳이 클래스로 만들 필요는 없지만
전체 코드 자체를 클래스로 만드는 경우도 있습니다.
만약 이 애플리케이션의 전체를 클래스로 만든다면, 대강 아래와 같은 형태가 되겠네요~

class Apple {
    costructor() {
        this.yOffset = 0;
        this.currentScene = 0;
        .....
    }

    setLayout() {
        .....
    }

    scrollLoop() {
        this.yOffset = window.pageYOffset;
        .....
    }
    playAnimation() {
        .....
    }
}

이미지 배경 문의

0

67

1

[크로스브라우징] safari에서 동영상 영역 미노출

0

107

1

항상 궁금했는데 크림슨 컬러 선택하셨을때 활용했던 사이트 좀 알려주세요~

0

109

2

vue강의는안하시나요?!

0

101

1

스크롤 속도에 따른 messageA_opacity_out

0

115

1

drawImage(objs.videoImages[sequence], 0, 0); error

0

89

1

선생님 캔버스 width 크기는 이미지 크기에맞게 해줘야하나요?

0

127

0

선생님 안녕하세요. 혹시 메인개발(?)분야가 뭔지 궁금합니다.

0

206

1

React에서 load 상태를 어떻게 감지할 수 있을까요?

0

680

1

[섹션7-3: 버그수정 2] tempYOffset 오류

0

195

1

스크롤할 때 캔버스로 하신 이유가 있으신가요? 그냥 성능 떄문에 캔버스로 하신건가요?

0

313

2

게속 오류떠서 글 작성해봐요....

0

506

2

Vanilla JavaScript로 SPA 만드는 자료 혹은 선택 기준을 추천해주실 수 있으신가요?

1

488

1

특정 타이밍 스크롤 애니메이션 적용하기 섹션 수강중입니다.

0

455

2

[#svg, #이미지프레임과 텍스트 싱크] 스크롤 값에 움직이는 svg path, 이미지프레임과 텍스트 싱크 맞추는 것, 2가지 질문이 있습니다.

0

451

2

페이지가 처음 로딩 되었을 때 애니메이션 처리가 되지 않는 느낌입니다

0

432

1

섹션2 번째, opacity=0 되지 않고 잔상이 남습니다.

0

533

1

원래 쿼리셀렉터에서는 띄워쓰기 하면안되나요?

0

593

2

라이브러리 질문

1

412

2

translateY대신 애플에서 사용한 것 처럼 matrix로 scale의 크기를 주려고 하는데

0

409

1

[스크롤 높이 세팅] scrollHeight값이 3990아닌 4645로만 나오는데 뭐가 문제일까요? ㅠㅠ

0

598

2

scrollLoop 함수 질문

0

476

2

도메인 웹호스팅시 이미지가 안 뜨는데 누가 좀 알려주세요ㅠㅜ

0

1235

2

load 이벤트시 첫 비디오 이미지가 뜨네요.

0

506

2