Day 13 - Slide in on Scroll
이미지로 스크롤하면 슬라이드되어서 나오는 애니메이션을 추가하는 예제이다. 디바운스도 사용한다. (예전에 정리해놓길 잘했다, 정말 자주 써먹는다)
Debounce
1 | function debounce(func, wait = 20, immediate = true) { |
외부에 공개되어 있는 디바운스 함수 틀 중 하나이고 강의 제작자도 그 중 하나를 썼다고 한다. (개인적으로 Zerocho님의 디바운스 예제가 더 마음에 든다)
checkSlide() 작성
1 | function checkSlide(e) { |
이미지에 슬라이드 트랜지션을 추가할 지 말지 결정하는 핵심적인 코드이다. .active
를 추가하면 트랜지션 효과가 나타나고, 제거하면 없어진다.
스크롤 값을 계산하는 부분이 가장 까다롭다. 우선 크게 계산하는 경우는 2가지인데, 이미지 위의 모서리가 보이는지, 이미지 아래의 모서리가 안보이는지 스크롤할 때 마다 디바운스로 호출하여 검사한다.
이제 윈도우 객체에 scroll
이벤트만 디바운스를 이용해서 걸어주면 끝이다.
1 | window.addEventListener("scroll", debounce(checkSlide)); |
이 강의의 목적은 스크롤 값을 수학을 이용해서 계산하는 것보다는, 각 객체에 대해 적절한 상황에서 변수를 선언하여 조건을 검사하고 특정 메소드를 호출할 수 있는지라고 한다. (사실 이 말이 맞는게, 스크롤 값 계산이 어렵다면 그냥 구글에 스크롤 슬라이드 이미지 검색하면 널렸다)
이제 자바스크립트 30코스 절반이 다 되어간다. 바닐라JS로 모든 것을 할 수 있다는 말이 체감되고 있다.