ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฌธ์ œ

window.addEventListener('scroll', function (event) {
    let {scrollTop, scrollHeight, clientHeight} = event.target.scrollingElement;
    let ratio = (scrollTop / contentHeight) * 100; //์ „์ฒด ๋ฌธ์„œ์— ๋Œ€ํ•œ ํ˜„์žฌ ์Šคํฌ๋กค๋œ ๋น„์œจ๋ฅผ ํผ์„ผํŠธํ™”

    scrollBar.style.transform = `translateX(-${100 - ratio}%)`;
    scrollBar.style.transition = 'transform 0.5s ease-out';
})

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์Šคํฌ๋กค๋œ ๋น„์œจ์— ๋”ฐ๋ผ Scroll Indicator๊ฐ€ ๋™์ ์œผ๋กœ ์›€์ง์ด๋„๋ก ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

ํ•˜์ง€๋งŒ ์Šคํฌ๋กค์ด ๋๊นŒ์ง€ ๋‚ด๋ ค๊ฐ”์Œ์—๋„ Scroll Indicator๋Š” ๋๊นŒ์ง€ ์ด๋™ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

 

์ฝ˜์†”์ฐฝ์„ ํ†ตํ•ด ์Šคํฌ๋กค์„ ๋๊นŒ์ง€ ๋‚ด๋ ค๊ฐ”์„ ๋•Œ ๊ฐ’์„ ํ™•์ธํ•ด๋ณด๋‹ˆ

 

100%์˜ ์ˆ˜์น˜๊ฐ€ ๋‚˜์™€์•ผ ๋  ๋น„์œจ์ด 96%๊ฐ€๋Ÿ‰์—์„œ ๋ฉˆ์ถฐ ์žˆ์—ˆ๋‹ค.

 

๋ฌธ์ œ ํ•ด๊ฒฐ

์ตœ์ดˆ ์Šคํฌ๋กค๋˜์ง€ ์•Š๋Š” ์ƒํƒœ์—์„œ๋Š” ์Šคํฌ๋กค ์ง„ํ–‰ ์ƒํ™ฉ์ด 0%์ด์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ clientHeight๊ฐ€ ํฌํ•จ๋œ ์ด ๋†’์ด์—์„œ๋Š” ์Šคํฌ๋กค๋˜์ง€ ์•Š๊ณ  ์ง„ํ–‰๋ฅ ์— ํฌํ•จํ•˜์ง€ ์•Š์•„์•ผ ํ•  clientHeight ๋งŒํผ์˜ ๋†’์ด๊ฐ€ ์Œ“์—ฌ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋†’์ด๋งŒํผ์„ ์ œ์™ธํ•ด์•ผ ํ–ˆ๋˜ ๊ฒƒ์ด๋‹ค.

window.addEventListener('scroll', function (event) {
    let {scrollTop, scrollHeight, clientHeight} = event.target.scrollingElement;

    let contentHeight = scrollHeight - clientHeight;
    let ratio = (scrollTop / contentHeight) * 100;

    scrollBar.style.transform = `translateX(-${100 - ratio}%)`;
    scrollBar.style.transition = 'transform 0.5 ease-out';
})

๋‹ค์Œ๊ณผ ๊ฐ™์ด contentHeight ๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด ์ค€ ๋’ค, ๋ฌธ์„œ์˜ ์ด ๋†’์ด(์Šคํฌ๋กค ๋Œ€์ƒ์˜ ์ด ๋†’์ด)์—์„œ ์›น ๋ธŒ๋ผ์šฐ์ € ์ฐฝ(๋‚ด์šฉ์ด ๋ณด์—ฌ์ง€๋Š” ์˜์—ญ)์˜ ๋†’์ด๋งŒํผ์„ ๋นผ์ค€ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ์—ˆ๊ณ , ์ด ๊ฐ’์œผ๋กœ ๋น„์œจ์„ ๊ณ„์‚ฐํ•˜์˜€๋‹ค.

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2024/10   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ