• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

5-3-2 계산식 질문 드립니다.

21.05.11 23:36 작성 조회수 112

0

안녕하세요? 강사님

해당 강의 중 챕터 수식에 해당하는 부분이 이해가 가지 않아 질문드립니다.

parallaxMoveDistance = Math.max(parallaxStartValue - parallaxStartValue, Math.min(parallaxStartValue, parallaxStartValue - (parallaxStartValue * (parallaxPercent/100))));

=> parallaxStartValue - (parallaxStartValue * (parallaxPercent/100))

위의 계산식 중에 min 계산부분이 이해가 가지 않습니다.

왜 저런 계산식이 나왔는지 의문이여서 질문드려요 ㅜㅜㅜ

답변 1

답변을 작성해보세요.

0

안녕하세요

먼저 사칙연산에서 나누기를 가장 먼저 계산하죠??

백분율을 구한 값에서 parallaxPercent/100 을해 값을 다시 되돌립니다.

즉 이값은 parallaxThisTop / parallaxSpeed

패럴럭스의 시작위치에서 스피드 즉 패럴럭스 될 거리를 나눈 값이죠!

그럼 이 값은 스크롤을 진행하는 동안 스크롤 영역 안에서 항상 0~1 사이의 값이 나올겁니다. 로그를 찍어보세요!

console.log(parallaxThisTop / parallaxSpeed)

로그를 찍어봤다면 스크롤 영역안에서 0에서 1의 값이 나오는걸 알 수 있을겁니다.

그다음 이 값에 parallaxStartValue 즉 1000을 곱해주는겁니다.

그럼 1000을 곱했으니 스크롤을 진행하는 동안 결과 값은 0부터 시작해서 1000에서 끝나게 되겠죠?

그다음 parallaxStartValue 즉 1000 에서 다시 위 값을 빼주는겁니다.

그럼 어떤 값이 나올까요?

1000 - 1 = 999

1000 - 2 = 998

1000 - 10 = 990

1000 - 100 = 900

1000 - 1000 = 0

즉 1000에서 0 사이의 값이 나오는거죠! 그리고 패럴럭스 엘리먼트에 값을 대입한다면??

패럴럭스될 요소들은 1000에서 시작해서 0까지 움직이게 되는겁니다.

그리고 Math객체의 min 메소드는 왼쪽과 오른쪽의 값을 비교해 더 작은 값을 찾아 줍니다. 

즉 두값중에 -값이 나올경우 항상 0 이 나오도록 처리한거죠 

:)