inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

질문있습니다 ㅠㅠ

264

김현준

작성한 질문수 5

0

function calcValues(values, currentYOffset) {
let rv;
// 현재 씬(스크롤섹션)에서 스크롤된 범위를 비율로 구하기
const scrollHeight = sceneInfo[currentScene].scrollHeight;
const scrollRatio = currentYOffset / scrollHeight;
if (values.length === 3) {
// start ~ end 사이에 애니메이션 실행
const partScrollStart = values[2].start * scrollHeight;
const partScrollEnd = values[2].end * scrollHeight;
const partScrollHeight = partScrollEnd - partScrollStart;
if (currentYOffset >= partScrollStart && currentYOffset <= partScrollEnd) {
rv = (currentYOffset - partScrollStart) / partScrollHeight * (values[1] - values[0]) + values[0];
} else if (currentYOffset < partScrollStart) {
rv = values[0];
} else if (currentYOffset > partScrollEnd) {
rv = values[1];
}
} else {
rv = scrollRatio * (values[1] - values[0]) + values[0];
}
return rv;
}
해석
  1. scrollHeight :  지금 현재 씬의 높이
  2. 지금 현재씬 높이 /현재 활성화된 씬의 비율
  3. 만약 values 값이 3개라면 ex) example : [0, 1, {start : 0.1, end : 0.2}]
  4. partScroll start,end(비율..) 는 scrollHeight(지금 현재 씬의 높이)를 곱함
  5. partScrollHeight :  start와 end의 중간 값
  6. 만약 현재 스크롤 위치가 스타트 위치보다 위에 있고 스크롤 위치가 end보다 작은곳에 있다면?
  7. 현재 스크롤 위치 빼기 시작 위치 / (sceneInfo[0~3]의 높이) * (끝값 - 시작값) + 시작값
  8. 사이 값이 아닐때 (partScrollStart값보다 작을때)=> 시작값
  9. 사이 값이 아닐대(partScrollend 값보다 클때) => 끝값
  10. value값이 3이 아니라면 ..? 이해 못함

 

정리하면서 공부하고 있는데.. value 값이 3이 아닌건 

videoImageCount: 960,
                imageSequence: [0959],

이부분도 3이 아닌데.. 그러면 videoImageCount일때는 values[1]의 값은 무엇인가요??

 

그리고 혹시 제가 설명한부분이 틀린부분있으면 고쳐주실수 있으실까요?

 

아 또 여쭈어볼게 있는데 

if (delayedYOffset < prevScrollHeight + sceneInfo[currentScene].scrollHeight) {
            document.body.classList.remove('scroll-effect-end');

       }

scroll-effect-end가 바디 클래스 리스트에 붙는다고 하는데 아무리 찾아봐도 안붙는거 가아서요 이부분이 이해가 안가네요 ㅠㅠ 도와주세요 

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

답변 1

0

1분코딩

전반적으로 잘 이해하신 것 같은데, 마지막에 10번 values값이 3이 아닌 것을 찾는게 아니라, values의 원소 개수인 length의 값(values.length)을 체크하는 것이랍니다. 세번째 값이 있느냐 없느냐에 따라 분기를 한 것인데요, 즉 [0, 959]는 values.length가 2이므로, 아래 rv = scrollRatio * (values[1] - values[0]) + values[0]; 이 부분이 실행됩니다. 3번째 원소가 없다는 것은, 그냥 해당 씬의 영역 전체에서 값이 처음부터 끝까지 변하는 것이지요.

scroll-effect-end 클래스가 안붙는 것은 해당 부분 스크립트가 빠져서 그런 것 같은데요, 강의에서 혹시 놓치셨다면 완성 소스에서 Ctrl+F로 scroll-effect-end 부분을 찾아보시면 될 것 같습니다^^

이미지 배경 문의

0

80

1

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

0

123

1

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

0

130

2

vue강의는안하시나요?!

0

124

1

스크롤 속도에 따른 messageA_opacity_out

0

130

1

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

0

94

1

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

0

137

0

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

0

219

1

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

0

699

1

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

0

207

1

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

0

326

2

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

0

531

2

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

1

500

1

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

0

464

2

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

0

460

2

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

0

443

1

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

0

538

1

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

0

605

2

라이브러리 질문

1

419

2

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

0

416

1

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

0

606

2

scrollLoop 함수 질문

0

482

2

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

0

1242

2

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

0

512

2