스탯 밴드

Stats band

큰 숫자 3~4개를 나열해 규모·성과를 즉각적으로 전달하는, 카운트업 애니메이션이 딸린 섹션.

다른 이름: Metrics rowNumber counters
···
html
<div class="stats">
  <div class="stat"><span class="num" id="s1">0</span><span class="label">Active teams</span></div>
  <div class="stat"><span class="num" id="s2">0%</span><span class="label">Uptime</span></div>
  <div class="stat"><span class="num" id="s3">0M</span><span class="label">Requests / day</span></div>
</div>
css
.stats{width:min(92%,760px);display:flex;justify-content:space-around;gap:4%}
.stat{display:flex;flex-direction:column;align-items:center;gap:clamp(2px,.8vmin,6px)}
.num{font-size:clamp(15px,4.2vmin,32px);font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums}
.label{font-size:clamp(7px,1.4vmin,11px);color:var(--muted);text-align:center}
js
const targets = [
  { id: 's1', to: 12400, suffix: '', format: function (v) { return Math.round(v).toLocaleString(); } },
  { id: 's2', to: 99.9, suffix: '%', format: function (v) { return v.toFixed(1); } },
  { id: 's3', to: 48, suffix: 'M', format: function (v) { return Math.round(v); } },
];
function run() {
  const start = performance.now();
  const dur = 1600;
  function tick(now) {
    const t = Math.min(1, (now - start) / dur);
    const eased = 1 - Math.pow(1 - t, 3);
    targets.forEach(function (item) {
      document.getElementById(item.id).textContent = item.format(item.to * eased) + item.suffix;
    });
    if (t < 1) requestAnimationFrame(tick);
  }
  requestAnimationFrame(tick);
}
run();
setInterval(run, 3400);

"10,000+ 사용자", "99.9% 가동률"처럼 근거가 되는 숫자 3~4개를 나란히 두는 섹션입니다. 텍스트로 "많은 사람이 쓰고 있어요"라고 말하는 것보다 구체적인 숫자가 훨씬 빠르게, 더 설득력 있게 읽힙니다.

숫자가 화면에 들어오는 순간 0에서 목표값까지 `count-up`으로 올라가게 하는 게 관례입니다 — 정적인 숫자보다 시선을 붙잡고, "지금 막 집계된 값"처럼 느껴지게 합니다. 단위(+, %, 배)는 숫자보다 작게, 라벨(무엇을 세는 숫자인지)은 숫자 아래에 둡니다.

숫자를 부풀리거나(실제론 무료 체험판 설치 수까지 합쳐놓고 "100만 다운로드"라 쓰는 식) 출처 없이 크게만 써두면 실사용자와 만났을 때 신뢰가 무너집니다. 가능하면 숫자 옆에 작은 각주나 기준 시점을 남기세요.

언제 쓰나

실제로 자랑할 만한 숫자가 있을 때만. 숫자가 작거나 없다면 억지로 쓰지 말고 `testimonial-wall`처럼 다른 형태의 사회적 증거를 쓰세요.