• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 progressbar

progressbar

  • 이 주제에는 1개 답변, 2명 참여가 있으며 codingapple2 년 전에 전에 마지막으로 업데이트했습니다.
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #93541

    최문길
    참가자
    HTML
        <nav class="navbar navbar-light bg-light">
            <div class="container-fluid">
              <span class="navbar-brand">Navbar</span>
              <span class="badge bg-dark">Dark 🔄</span>
              <button class="navbar-toggler" type="button">
                <span class="navbar-toggler-icon"></span>
              </button>
            </div>
            <div class="page">
                <div class="progress"></div>
            </div>
          </nav>

    <hr />

    JAVASCRIPT
    /*전체 페이지 progress-bar 만들귀*/
            /*
             1.progress bar 고정하기
             
             2.전체 scroll가능양(scrollTop 또는 scrollY) 높이 구하기 <- 전체 길이를 백분율로 나타내기 위함.
             2-1 100분율로 나타내는 방법은?
            => 일부값 / 전체값 * 100
            따라서 html의 스크롤하는 양(scrollTop또는 scrollY(window로할꺼면)) /  (웹페이지 실제높이(scrollHeight) - 유저에게 보여지는 웹페이지 높이(clientHeight)) * 100  
            */

    <hr />

    이 로직이 맞나염?
    
    
     window.addEventListener("scroll",()=> {
                const wind = document.querySelector("html")
                let nav = document.querySelector(".navbar");
                let navHeight = nav.clientHeight;
                let progress = document.querySelector(".progress");
               
                
                console.log(wind.scrollTop / (wind.scrollHeight - wind.clientHeight) * 100)
                progress.style.width = `${wind.scrollTop / (wind.scrollHeight - wind.clientHeight) * 100}%`
                if(wind.scrollTop>navHeight) {
                    nav.classList.add("fixed");
                } else {
                    nav.classList.remove("fixed")
                }
            })
    
    이렇게 하니까 잘 되긴 합니다 .
    혹시 맞게 했다면 gif로 개굴사진 아쉬운게 있다면 피드백과 조언 부탁드려요
    #93558

    codingapple
    키 마스터
    안변하는 변수들은 이벤트리스너 밖으로 빼도 될듯요
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠