티스토리 진행 표시줄(Progress Bar) 적용하기

항상 글을 작성하다 보면 생각했던 것보다 내용이 많이 추가되어 스크롤 압박이 생기고, 독자가 어느 정도 읽었는지 진행 상황을 파악하기 어려운 점이 있었습니다. 그러던 중 인터넷을 조금 찾아보니 '진행 표시줄(Progress Bar)'을 적용하면 해결할 수 있다는 것을 알게 되었고, 흔하게 정보가 공유되고 있어 어렵지 않게 적용할 수 있었습니다. 여기에 ChatGPT를 활용해 조금 더 보기 좋게 디자인을 다듬어 보았고, 필자의 블로그에서는 정상적으로 작동하는 것을 확인하였기에 아래와 같이 내용을 공유해 봅니다. ↓ 미리 적용된 예시 참고


◈ STEP① 심플 버전

 

자신의 스킨 HTML 편집에서 Ctrl+F 단축기를 이용해「body id」 부분을 검색합니다. 사용하시는 스킨마다 적용 위치나 방법이 조금씩 다를 수 있습니다. 커스텀(유료 스킨)에서는 대체로  body id= 를 많이 활용하는 것 같습니다. 검색이 되지 않는다면, </head><body> 또는 <body> 바로 아래에 삽입하여 정상 작동 여부를 테스트해 본 후 문제가 생긴다면 위치를 조금씩 옮겨가며 조정해 보시기 바랍니다.

 

<!-- start progress bar -->

<script type="text/javascript" src="https://rawcdn.githack.com/mburakerman/prognroll/0feda211643153bce2c69de32ea1b39cdc64ffbe/src/prognroll.js">
</script> 
<script type="text/javascript">
 $(function() {
 $("body").prognroll(
			{height:7, color:"#1e73be"}
			); 
$(".content").prognroll({
			custom:true});

}); 
</script>

<!-- end progress bar -->

◇ 추가 설명

PrognRoll.js라는 라이브러리를 외부에서 불러오는 스크립트 방식입니다. (raw.)githack.com은 GitHub의 raw 파일을 안정적으로 CDN(콘텐츠 전송 네트워크, Content Delivery Network)처럼 전달해 주는 서비스입니다. 그렇기에 영구적용이 되지 않을 수 있습니다. 해당 개발자 말씀으로는 2013년부터 시작하여 10년 이상 유지하였지만 특별한 문제가 없으면 계속 유지를 할 것으로 보입니다.

 

height: 7, 진행 바의 높이(두께)를 7px로 설정한다는 의미로, 숫자가 커질 수록 진행바가 두꺼워집니다.

color: "#1e73be", 바의 색상을 파란색 계열로 설정한다는 의미로, 원하는 RGB(Hex color codes) 색상을 넣습니다. (구글 검색 예시)


◈ STEP② 진행률 표시 레트로 버전

<!-- start progress bar + gauge -->
<style>
  #scroll-gauge {
    position: fixed;
    top: 0;
    left: 10px;
    font-size: 13px;
    font-family: monospace;
    font-weight: bold;
    color: #006dd7;
    z-index: 9999;
    background: rgba(255, 255, 255, 0.7);
    padding: 2px 6px;
    border-bottom-right-radius: 6px;
  }
</style>

<script src="https://rawcdn.githack.com/mburakerman/prognroll/0feda211643153bce2c69de32ea1b39cdc64ffbe/src/prognroll.js"></script>

<script>
  $(function () {
    $("body").prognroll({
      height: 5,
      color: "#006dd7"
    });

    var gaugeDiv = $('<div id="scroll-gauge">░░░░░░░░░░</div>');
    $("body").append(gaugeDiv);

    $(window).on("scroll", function () {
      var scrollTop = $(window).scrollTop();
      var winHeight = $(window).height();
      var docHeight = $(document).height();
      var percent = Math.round((scrollTop / (docHeight - winHeight)) * 100);

      var totalBars = 10;
      var filledBars = Math.round(percent / 10);
      var gauge = '▓'.repeat(filledBars) + '░'.repeat(totalBars - filledBars);

      $("#scroll-gauge").text(gauge + ' ' + percent + '%');
    });
  });
</script>
<!-- end progress bar + gauge -->


◈ STEP③ 진행률 표시 100% 완료 체크 버전

<!-- start progress bar + check -->
<style>
  #scroll-check {
    position: fixed;
    top: 0;
    left: 10px;
    font-size: 14px;
    font-weight: bold;
    color: #006dd7;
    z-index: 9999;
    background: rgba(255,255,255,0.7);
    padding: 2px 6px;
    border-bottom-right-radius: 6px;
  }
</style>

<script src="https://rawcdn.githack.com/mburakerman/prognroll/0feda211643153bce2c69de32ea1b39cdc64ffbe/src/prognroll.js"></script>

<script>
  $(function () {
    $("body").prognroll({
      height: 5,
      color: "#006dd7"
    });

    var checkDiv = $('<div id="scroll-check">⬆️</div>');
    $("body").append(checkDiv);

    $(window).on("scroll", function () {
      var scrollTop = $(window).scrollTop();
      var winHeight = $(window).height();
      var docHeight = $(document).height();
      var percent = Math.round((scrollTop / (docHeight - winHeight)) * 100);

      if (percent >= 100) {
        $("#scroll-check").text("✔ 완료");
      } else {
        $("#scroll-check").text("⬆️ " + percent + "%");
      }
    });
  });
</script>
<!-- end progress bar + check -->


저는 세 가지 방식 중에서 3번이 가장 마음에 들었습니다. 확실히 AI가 발달하면서 업무나 블로그 작성의 효율이 크게 올라간 건 사실입니다. 하지만 어디까지나 AI는 '보조'일뿐이고, 실제로 자료를 바탕으로 직접 실행하고 테스트해 보는 게 가장 중요하다고 생각합니다. 어쨌든 단순한 작업이었지만, 블로그에 진행 표시줄 하나 추가한 것만으로도 페이지가 조금 더 풍성해 보이는 효과가 있네요. 현재 사용 중인 유료 스킨도 기본 구성만으로 충분히 멋지지만, 이렇게 하나씩 커스텀해서 내 스타일대로 꾸며가는 재미도 꽤 쏠쏠한 것 같습니다.

Designed by JB FACTORY