<.js>
// 브라우저 창의 scroll 이벤트 감지
window.addEventListener('scroll', (e) => {
// window.scrollY: 전체 페이지에서 스크롤 얼만큼 내렸냐
// (호환성 좋게 쓰려면 window.pageYOffset 사용)
if (this.scrollY > 100) {
document.querySelector('h1').style.fontSize = `1rem`
document.querySelector('nav').style.padding = `1rem 3rem`
} else {
document.querySelector('h1').style.fontSize = `2rem`
}
})
요소.scrollHeight
로 요소의 실제 높이를 구할 수 있다.요소.scrollTop
으로 overflow: scroll
된 요소의 스크롤 양을 구할 수 있다.요소.clientHeight
로 overflow 로 가려지지 않은 부분의 높이를 구할 수 있다.<.js>
// overflow:scroll 되어있는 div요소 space에 이벤트 감지
space.addEventListener('scroll', (e) => {
// div의 스크롤 양 === div의 실제 높이
if (e.target.scrollTop === e.target.scrollHeight) {
button.style.backgroundColor = `rgb(111, 192, 255)`
} else {
button.style.backgroundColor = `#eee`
}
})
요소.clientHeight
로 구할 수 있었다.<.js>
// 스크롤양 + 눈에 보이는 부분의 요소 높이 === 요소의 실제 높이
if (e.target.scrollTop + e.target.clientHeight === e.target.scrollHeight) {
button.style.backgroundColor = `rgb(111, 192, 255)`
} else {
button.style.backgroundColor = `#eee`
}
})
정상적으로 작동한다.
JS를 사용하여 인터렉티브한 효과를 만들 때
clientX, clientY, scrollTop, scrollHeigt 등
요소의 크기와 너비, 브라우저에서 감지되는 값 등을 활용해서
애니메이션을 주는 것을 봤다.
앞으로 동적인 웹사이트를 많이 만들고 싶기 때문에
요소들의 값을 활용하고 적용하는 것에 익숙해져야겠다.
와우! 스크롤 이벤트! 너무 잘하셨네요!