Muscardinus

Scroll Indicator 본문

FrontEnd/Basic Skills

Scroll Indicator

Muscardinus 2022. 3. 20. 00:33
728x90

목표

scrollTop / scrollHeight / clientHeight 에 관해서 잘 알자

 

<header>
    <div class="container">
        <h1>Hello World</h1>
    </div>

    <div id="scroll-bar"></div>
</header>

<main id="content" class="container">
	<p>......</p>
</main>

 

첫 번째 방법

 

width를 활용

const scrollBar = document.getElementById('scroll-bar');

// 첫 번째 방법 (1) : width 크기를 변경

window.addEventListener('scroll', function () {
    // Write JS Code Here!
    const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    // 문서 전체 높이
    const scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
    // 화면의 높이
    const clientHeight = document.documentElement.clientHeight || document.body.clientHeight;
    // 실제 남은 길이
    const contentHeight = scrollHeight - clientHeight;
    const percent = (scrollTop / contentHeight) * 100;
    scrollBar.style.width = `${percent}%`
})

 

두 번째 방법

 

translate를 활용

        #scroll-bar {
            position: absolute;
            bottom: 0;
            left: 0;
            height: 4px;
            background-color: blue;

            /* 두 번째 방법 */
            width: 100%;
            transform : translateX(-100%);
        }

 

const scrollBar = document.getElementById('scroll-bar');
// 두 번째 방법 (2) : translateX 활용

window.addEventListener('scroll', function () {
    // Write JS Code Here!
    const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    // 문서 전체 높이
    const scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
    // 화면의 높이
    const clientHeight = document.documentElement.clientHeight || document.body.clientHeight;
    // 실제 남은 길이
    const contentHeight = scrollHeight - clientHeight;
    const percent = (scrollTop / contentHeight) * 100;
    scrollBar.style.transform = `translateX(-${100 - percent}%)`;
    scrollBar.style.transition = `transform 0.3 ease-out`;
})
728x90

'FrontEnd > Basic Skills' 카테고리의 다른 글

Progress Bar  (0) 2022.03.20
Loading  (0) 2022.03.20
Modal Window  (0) 2022.03.19
Rating UI  (0) 2022.03.19
Radio Box  (0) 2022.03.17
Comments