...

๋ง์ฐ์ค ํ & ์คํฌ๋กค ๋ฉ์ถค ๊ฐ์ง ๋ฐฉ๋ฒ
์ฌ์ฉ์๊ฐ ๋ฌธ์๋ฅผ ์คํฌ๋กค ํ๋ฉด ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋๋ฐ, ์คํฌ๋กค์ ๋ฉ์ถ๋ฉด ์ด๋ฅผ ๊ฐ์งํ์ฌ ์คํฌ๋ฆฝํธ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์ถ์ ์ํฉ์ด ์์ ๊ฒ์ด๋ค.
๋ง์ฐ์ค ์คํฌ๋กค์ ๊ฐ์งํ๋ ์ด๋ฒคํธ๋ ๋๊ฐ์ง๊ฐ ์๋๋ฐ, ๋ฌธ์๋ฅผ ์คํฌ๋กคํ๋ฉด ๋ฐ์ํ๋ 'scroll' ์ด๋ฒคํธ์ ๊ทธ๋ฅ ๋ง์ฐ์ค ๊ฐ์ด๋ฐ ํ ๋ฒํผ์ ๋ด๋ฆฌ๋ฉด ๋ฐ์ํ๋ 'wheel' ์ด๋ฒคํธ๊ฐ ์๋ค. ์ด ์ด๋ฒคํธ๋ค์ setTimeout() ๋ฉ์๋์ ์กฐํฉํด์ ์ข
๋จ ์ง์ ์ ๊ฐ์งํ๋ ๋ก์ง์ ๊ตฌํ ํ ์๊ฐ ์๋ค.
let scrolling; // setTimeout() ๋ฉ์๋๋ฅผ ํ ๋นํ๋ ์ ์ญ ๋ณ์
window.addEventListener('scroll', (e) => {
if (!scrolling) {
console.log('start scrolling!');
}
// ์ผ์ ์๊ฐ(250ms) ๋ค์ ์คํฌ๋กค ๋์ ๋ฉ์ถค์ ๊ฐ์ง
clearTimeout(scrolling);
scrolling = setTimeout(() => {
console.log('stop scrolling!');
scrolling = undefined;
}, 250);
})
let wheeling; // setTimeout() ๋ฉ์๋๋ฅผ ํ ๋นํ๋ ์ ์ญ ๋ณ์
window.addEventListener('wheel', (e) => {
if (!wheeling) {
console.log('start wheeling!');
}
// ์ผ์ ์๊ฐ(400ms) ๋ค์ ์คํฌ๋กค ๋์ ๋ฉ์ถค์ ๊ฐ์ง
clearTimeout(wheeling);
wheeling = setTimeout(() => {
console.log('stop wheeling!');
wheeling = undefined;
}, 400);
})
'mousewheel'์ deprecated ๋ ๊ตฌํ ์ด๋ฒคํธ๋ก์ ์ต์ ์ด๋ฒคํธ ์คํ์ธ 'wheel' ์ฌ์ฉ์ ๊ถ์ฅํ๋ค.
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.