πŸ“ΆμŠ€ν¬λ‘€ μ§„ν–‰λ₯  인디케이터 κ°€μ΄λ“œ

슀크둀 μœ„μΉ˜λ‘œ μ§„ν–‰λ₯ κ³Ό 채움 폭 계산

κ΄€λ ¨λœ 도ꡬ

슀크둀 μ§„ν–‰λ₯ μ€ λ¬΄μ—‡μœΌλ‘œ λ‚˜λˆŒκΉŒ

슀크둀 μ§„ν–‰λ₯  μΈλ””μΌ€μ΄ν„°λŠ” 글을 μ–΄λ””κΉŒμ§€ μ½μ—ˆλŠ”μ§€ μ•Œλ € μ£ΌλŠ” 얇은 λ§‰λŒ€μž…λ‹ˆλ‹€. 핡심은 λΆ„λͺ¨λ₯Ό λ¬΄μ—‡μœΌλ‘œ λ‘λŠλƒμΈλ°, λ¬Έμ„œ 전체 높이가 μ•„λ‹ˆλΌ μ‹€μ œλ‘œ μŠ€ν¬λ‘€ν•  수 μžˆλŠ” 거리둜 λ‚˜λˆ μ•Ό 맨 μ•„λž˜μ—μ„œ μ •ν™•νžˆ 100 %κ°€ λ©λ‹ˆλ‹€. μ„Έ κ°’λ§Œ λ„£μœΌλ©΄ μ§„ν–‰λ₯ κ³Ό μ§„ν–‰λ°” 채움 폭이 λ°”λ‘œ λ‚˜μ˜€κ³ , λΆ„λͺ¨λ₯Ό 잘λͺ» 뒀을 λ•Œ μƒκΈ°λŠ” μ˜€μ°¨λ„ ν•¨κ»˜ 보여 μ€λ‹ˆλ‹€.

계산 방식

슀크둀 κ°€λŠ₯ 거리 = scrollHeight βˆ’ clientHeight, μ§„ν–‰λ₯  = scrollTop Γ· 슀크둀 κ°€λŠ₯ 거리 Γ— 100 이며 0 %와 100 % μ‚¬μ΄λ‘œ μžλ¦…λ‹ˆλ‹€. λ¬Έμ„œ λ†’μ΄λ‘œ λ‚˜λˆ„λŠ” μ‹μ˜ μ΅œλŒ€ μ§„ν–‰λ₯ μ€ (scrollHeight βˆ’ clientHeight) Γ· scrollHeight Γ— 100 으둜, λ·°ν¬νŠΈκ°€ μ°¨μ§€ν•˜λŠ” λΉ„μœ¨λ§ŒνΌ λͺ¨μžλΌκ²Œ λ©λ‹ˆλ‹€. 값은 μ†Œμˆ˜ 1자리둜 ν‘œμ‹œν•˜κ³  νŒμ •λ„ 같은 자리수둜 ν•©λ‹ˆλ‹€.

ν•œκ³„μ™€ μ ‘κ·Όμ„±

2026λ…„ 10μ›” κΈ°μ€€ μ§„ν–‰λ°”μ˜ ꢌμž₯ λ‘κ»˜Β·μƒ‰Β·μœ„μΉ˜μ— λŒ€ν•œ 곡인 기쀀은 μ—†μ–΄ 이 λ„κ΅¬λŠ” μ œμ‹œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ£Όμ†Œμ°½ 높이 λ³€ν™”, 이미지 μ§€μ—° λ‘œλ”©μœΌλ‘œ λ¬Έμ„œ 높이가 λ°”λ€ŒλŠ” 상황, 슀크둀 μŠ€λƒ…μ€ 계산에 λ„£μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 진행바에 μ• λ‹ˆλ©”μ΄μ…˜μ„ λ„£λŠ”λ‹€λ©΄ prefers-reduced-motion 을 μ‘΄μ€‘ν•˜μ„Έμš”.

자주 λ¬»λŠ” 질문

μ™œ λ¬Έμ„œ λ†’μ΄λ‘œ λ‚˜λˆ„λ©΄ μ•ˆ λ˜λ‚˜μš”?

λ·°ν¬νŠΈμ— λ³΄μ΄λŠ” λ§ŒνΌμ€ μŠ€ν¬λ‘€ν•˜μ§€ μ•Šμ•„λ„ 이미 읽은 μ˜μ—­μ΄κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. λ¬Έμ„œ λ†’μ΄λ‘œ λ‚˜λˆ„λ©΄ λκΉŒμ§€ 내렀도 100 %에 λ‹Ώμ§€ λͺ»ν•˜κ³ , 결과에 ν‘œμ‹œλœ μ΅œλŒ€ μ§„ν–‰λ₯ μ—μ„œ 멈μΆ₯λ‹ˆλ‹€.

μ§„ν–‰λ°” λ‘κ»˜λ‚˜ 색은 μ–Όλ§ˆκ°€ μ’‹μ€κ°€μš”?

곡인된 ꢌμž₯ λ‘κ»˜Β·μƒ‰ 기쀀이 μ—†μ–΄ 이 λ„κ΅¬λŠ” 값을 μ œμ‹œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‹€λ§Œ 진행바도 κ·Έλž˜ν”½ μš”μ†Œμ΄λ―€λ‘œ λ°°κ²½κ³Ό μΆ©λΆ„νžˆ κ΅¬λΆ„λ˜λŠ” λŒ€λΉ„λ₯Ό ν™•λ³΄ν•˜μ„Έμš”.

κ°€λ‘œ μŠ€ν¬λ‘€μ—λ„ μ“Έ 수 μžˆλ‚˜μš”?

식은 κ°™μŠ΅λ‹ˆλ‹€. 높이 λŒ€μ‹  scrollWidth 와 clientWidth, scrollLeft λ₯Ό λ„£μœΌλ©΄ 같은 λ°©μ‹μœΌλ‘œ κ°€λ‘œ μ§„ν–‰λ₯ μ΄ λ‚˜μ˜΅λ‹ˆλ‹€.