-
카테고리
-
세부 분야
프론트엔드
-
해결 여부
미해결
5-3-2 계산식 질문 드립니다.
21.05.11 23:36 작성 조회수 120
0
안녕하세요? 강사님
해당 강의 중 챕터 수식에 해당하는 부분이 이해가 가지 않아 질문드립니다.
parallaxMoveDistance = Math.max(parallaxStartValue - parallaxStartValue, Math.min(parallaxStartValue, parallaxStartValue - (parallaxStartValue * (parallaxPercent/100))));
=> parallaxStartValue - (parallaxStartValue * (parallaxPercent/100))
위의 계산식 중에 min 계산부분이 이해가 가지 않습니다.
왜 저런 계산식이 나왔는지 의문이여서 질문드려요 ㅜㅜㅜ
답변을 작성해보세요.
0
깡코딩
지식공유자2021.05.12
안녕하세요
먼저 사칙연산에서 나누기를 가장 먼저 계산하죠??
백분율을 구한 값에서 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 이 나오도록 처리한거죠
:)
답변 1