테스티모니얼 월

Testimonial wall

고객 후기 카드를 여러 줄로 흘려보내거나 격자로 채워, 많은 사람이 쓰고 있다는 인상을 주는 섹션.

다른 이름: Review wallQuote grid
···
html
<div class="wall">
  <div class="row" id="row1"></div>
  <div class="row rev" id="row2"></div>
</div>
css
.wall{width:min(96%,860px);display:flex;flex-direction:column;gap:clamp(6px,1.5vmin,10px);overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.row{display:flex;gap:clamp(6px,1.5vmin,10px);width:max-content;animation:go 22s linear infinite}
.row.rev{animation-direction:reverse}
.qcard{width:clamp(90px,20vmin,190px);background:var(--surface);border:1px solid var(--line);border-radius:10px;
  padding:clamp(6px,1.6vmin,12px);display:flex;flex-direction:column;gap:6%}
.who{display:flex;align-items:center;gap:6px}
.avatar{width:clamp(14px,3vmin,22px);height:clamp(14px,3vmin,22px);border-radius:50%;flex:none;
  display:grid;place-items:center;color:#fff;font-size:clamp(6px,1.2vmin,9px);font-weight:700}
.name{font-size:clamp(7px,1.3vmin,10px);font-weight:700}
.role{font-size:clamp(6px,1.1vmin,8px);color:var(--muted)}
.quote{margin:0;font-size:clamp(6.5px,1.3vmin,10px);color:var(--fg);opacity:.85;line-height:1.35}
@keyframes go{to{transform:translateX(-50%)}}
js
const PEOPLE = [
  ['Sample User 1', 'Placeholder — Ops Lead', 'Cut our weekly report time in half.'],
  ['Sample User 2', 'Placeholder — Founder', 'Set up in an afternoon, no engineer needed.'],
  ['Sample User 3', 'Placeholder — PM', 'The whole team actually uses it daily.'],
  ['Sample User 4', 'Placeholder — Support', 'Tickets dropped 30% after switching.'],
  ['Sample User 5', 'Placeholder — Designer', 'Finally a tool that feels this fast.'],
];
const ACCENTS = ['var(--accent)', 'var(--accent-2)', 'var(--accent-3)'];
function fill(id) {
  const row = document.getElementById(id);
  for (let copy = 0; copy < 2; copy++) {
    PEOPLE.forEach(function (p, i) {
      const card = document.createElement('div');
      card.className = 'qcard';
      const initials = p[0].split(' ').map(function (w) { return w[0]; }).join('');
      card.innerHTML = '<div class="who"><span class="avatar" style="background:' + ACCENTS[i % 3] + '">' +
        initials + '</span><span><span class="name">' + p[0] + '</span><br><span class="role">' + p[1] +
        '</span></span></div><p class="quote">"' + p[2] + '"</p>';
      row.appendChild(card);
    });
  }
}
fill('row1');
fill('row2');

후기 1~2개만 크게 보여주는 단일 인용구와 달리, 테스티모니얼 월은 짧은 후기 여러 개(보통 9~20개)를 한 화면에 채워 "양"으로 신뢰를 만듭니다. 각 카드는 아바타(또는 이니셜), 이름·직함, 짧은 인용문으로 구성됩니다.

여러 줄을 서로 다른 속도·방향으로 자동 스크롤시키는 마퀴 구성이 흔합니다 — 줄마다 방향을 반대로 두면(위 줄은 왼쪽으로, 아래 줄은 오른쪽으로) 정적인 격자보다 훨씬 생동감 있게 느껴집니다.

후기 내용이 전부 "최고예요!" 같은 추상적 칭찬이면 오히려 조작된 것처럼 보입니다. 구체적인 숫자나 상황("온보딩 시간을 3일에서 2시간으로 줄였다")이 들어간 후기가 신뢰를 더 얻습니다. 이 데모의 인물은 전부 가상의 플레이스홀더입니다.

언제 쓰나

리뷰가 충분히 쌓였고(최소 두 자릿수), "양"으로 신뢰를 주고 싶을 때. 후기가 몇 개 없다면 억지로 반복하지 말고 단일 인용구를 쓰세요.