inflearn logo
강의

Course

Instructor

Apple website interaction clone!

Bug fix 2

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

195

angelplayerdev0956

2 asked

0

tempYOffset을 통해서 스크롤 위치를 저장하고 있다가 총 100px을 이동하는 것으로 이해하였는데요.

tempYOffset의 초기값, 즉 yOffset이 0으로 출력됩니다.

이게 바로 밑에 있는

window.addEventListener('scroll', () => { }

가 아직 실행되지 않아서 yOffset이 초기화 되지 않아 0으로 나오나? 라고 생각하였는데 막상 강의 코드는 딱히 그런 것을 고려하지 않고도 잘 나오는 것 같더라구요.

혹시 어떤 문제일지 알 수 있을까요?

일단 당장에는 window.scrollY를 사용해서 임시조치로 해결했습니다.

    // 새로고침 등으로 스크롤을 처음부터 하지 않는 경우 시작하는 경우 해결을 위해
    window.addEventListener('load', () => {
        setLayout();
        sceneInfo[0].objs.context.drawImage(sceneInfo[0].objs.videoImages[0], 0, 0);
        document.body.classList.remove('before-load');

        // 특정 위치에서 새로 고침 하면 화면이 나오지 않는 문제를 해결
        let tempYOffset = yOffset;
        let tempScrollCount = 0; // 스크롤 몇 번 했는지 저장
        console.log(tempYOffset);
        console.log(yOffset);
        let siId = setInterval(() => {
            window.scrollTo(0, tempYOffset);
            tempYOffset += 5;
            tempScrollCount++;

            if (tempScrollCount > 20) {
                clearInterval(siId);
            }
        }, 20);
  
        // ..............

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

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

주신 코드와 설명을 바탕으로 보았을 때, yOffset 변수가 정의되고 초기화되는 위치와 시점을 다시 확인해 보아야 할 것 같습니다. yOffset 변수는 스크롤 위치를 저장하기 위한 변수로 보이는데, window.addEventListener('load', ...) 이벤트 내에서 사용되기 전에 적절한 값으로 초기화되어야 합니다.

yOffset의 초기값이 0으로 출력되는 문제는 스크롤 이벤트 리스너가 실행되기 전에 yOffset의 값이 설정되지 않았기 때문일 수 있습니다. 스크롤 이벤트가 발생하면 yOffset 변수에 window.scrollY 값을 할당하여 현재의 스크롤 위치를 업데이트해야 합니다.

window.addEventListener('scroll', ...) 이벤트 리스너 안에서 yOffsetwindow.scrollY로 업데이트하는 코드를 추가하셨는지 확인해 보시기 바랍니다. 만약 해당 코드가 있다면, 페이지가 로드될 때 yOffsetwindow.scrollY의 값으로 초기화하는 코드가 window.addEventListener('load', ...) 이벤트 리스너에 있는지 확인해 보셔야 합니다.

현재 임시로 window.scrollY를 사용하여 문제를 해결하셨다고 하셨는데, 이 방법도 스크롤 위치를 추적하는데 유효한 솔루션이 될 수 있습니다. 하지만 코드 일관성과 가독성을 위해서는 yOffset 변수를 적절히 초기화하고 사용하는 것이 중요합니다.

스크롤 이벤트 관련 로직에서 변수의 초기화 시점과 사용 시점을 명확히 구분지어 관리하는 것이 중요합니다. 추가 질문이 있으시면 언제든지 문의해 주세요.

이미지 배경 문의

0

67

1

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

0

107

1

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

0

109

2

vue강의는안하시나요?!

0

101

1

스크롤 속도에 따른 messageA_opacity_out

0

116

1

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

0

89

1

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

0

127

0

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

0

206

1

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

0

681

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

마지막 강의 js파일로 바꿀 시 스크롤 프레임 렉? 버벅임?

0

1022

2