ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์๋ค์ ํตํด ์คํฌ๋กค ์์น์ ๋ฐ๋ผ ๊ฐ๊ธฐ ๋ค๋ฅธ Header ๋์์ธ์ด ๋๋๋ง๋๋๋ก ์ฝ๋๋ฅผ ๊ตฌํํ์๋ค.
scrollTop
window.addEventListener('scroll', (event) => {
let {scrollTop} = event.target.scrollingElement; //document.documentElement.scrollTop || document.body.scrollTop
nav.classList.add('active'); //active ํด๋์ค ์ฌ๋ถ์ ๋ฐ๋ผ ํค๋ ๋์์ธ์ด ์์ดํ๊ฒ ์๋
if(scrollTop <= 50) nav.classList.remove('active');
})
scrollY / pageYoffset
window.addEventListener('scroll', function() {
const top = window.scrollY || window.pageYOffset;
(top >= 50 )
? nav.classList.add('active')
: nav.classList.remove('active');
})
Window ์ธํฐํ์ด์ค์ scrollY ์ฝ๊ธฐ ์ ์ฉ ์์ฑ์ ๋ฌธ์๊ฐ ์์ง์ผ๋ก ์ผ๋ง๋ ์คํฌ๋กค๋๋์ง ํฝ์ ๋จ์๋ก ๋ฐํํฉ๋๋ค.
์ต์ ๋ธ๋ผ์ฐ์ ์์๋ ๊ฐ์ ์ ๋ฐ๋๊ฐ ํฝ์ ๋ณด๋ค ์์ผ๋ฏ๋ก ๋ฐ๋์ ์ ์ซ๊ฐ์ ๋ฐํํ๋๊ฑด ์๋๋๋ค.
Window ์ธํฐํ์ด์ค์ pageYOffset ์ฝ๊ธฐ ์ ์ฉ ์์ฑ์ scrollY ์ ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก, ๋ฌธ์๊ฐ ์์ง์ผ๋ก ์ผ๋ง๋ ์คํฌ๋กค๋๋์ง
ํฝ์ ๋จ์๋ก ๋ฐํํฉ๋๋ค. ์ผ๋ถ ์ค๋๋ ๋ธ๋ผ์ฐ์ ๋ scrollY ๋์ pageYOffset ๋ง ์ง์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ง๋ง, ๋ ธํ ํ๊ฒฝ์ ์ ๊ฒฝ์ฐ์ง
์์๋ ๋๋ค๋ฉด ๋ ์ค ์๋ฌด๊ฑฐ๋ ์ฌ์ฉํด๋ ๊ด์ฐฎ์ต๋๋ค.
wheelDelta
const isFireFox = (navigator.userAgent.indexOf('Firefox') !== -1);
const wheelEvt = isFireFox ? 'DOMMouseScroll' : 'wheel';
window.addEventListener(wheelEvt, mouseWheelEvent);
function mouseWheelEvent(e) {
const delta = e.wheelDelta ? e.wheelDelta : -e.detail;
(delta < 0)
? nav.classList.add('active')
: nav.classList.remove('active');
}
wheelEvent์ wheelDelta ์์ฑ ๊ฐ์ ํ ์ด ์ผ๋ง๋ ํ์ ํ๋์ง๋ฅผ ๋ํ๋ด๋ ์ถ์ ๊ฐ์ด๋ค. ํ ์ด ์ฌ์ฉ์์๊ฒ ๋ฉ์ด์ง๋ฉด ์์์ด๊ณ ๊ทธ๋ ์ง
์์ผ๋ฉด ์์์ด๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๊ฐ์ ์์ ์๋ฏธ๋ ๋ธ๋ผ์ฐ์ ๊ฐ์ ๋์ผํ์ง ์๋ค.
ํ์ง๋ง Element: mouseWheel ๊ธฐ๋ฅ์ ๊ด๋ จ ์น ํ์ค์์ ์ด๋ฏธ ์ ๊ฑฐ๋์๊ฑฐ๋ ์ญ์ ๊ณผ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ ์ด์ ๊ถ์ฅ๋์ง ์๋๋ค.
์คํฌ๋กค ์ํ ๊ตฌ๋ถํ๊ธฐ
let oldValue = 0;
window.addEventListener('scroll', function(){
const newValue = window.scrollY || window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
// ์์ : ์คํฌ๋กค ๋ค์ด
if(oldValue - newValue < 0) {
nav.classList.add('active');
}
// ์์ : ์คํฌ๋กค ์
if(oldValue - newValue > 0) {
nav.classList.remove('active');
}
oldValue = newValue;
console.log(oldValue, newValue);
});
'JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ด๋ฒคํธ ํธ๋ค๋ฌ this ๋ฐ์ธ๋ฉ ๋ฌธ์ (0) | 2021.07.25 |
---|---|
JS ์์์ ์ดํธ๋ฆฌ๋ทฐํธ์ ๊ฐ์ฒด ๋์ ํ ๋น (0) | 2021.07.25 |
ํด๋์ค๋ ์์ด๋ ๊ฐ์ด ์๋ Element ๊ฐ์ ธ์ฌ ๋ ๋ฌธ์ (0) | 2021.07.22 |
getPropertyValue์ ๋ฐํ๊ฐ (0) | 2021.07.20 |
setTimeout์ผ๋ก setInterval ๊ตฌํ (0) | 2021.07.18 |
๋๊ธ