점진적 문구 공개

Progressive Copy

한 문단으로 다 설명하려 하지 않고, 한 줄 요약 뒤에 "더 보기"로 자세한 설명을 숨겨두는 문구 설계.

다른 이름: Layered copy
···
html
<div class="stage">
  <div class="pane bad"><span class="mark">✕</span><span class="label">Before</span>
    <p class="copy" id="bt"></p>
    <p class="why" id="bw"></p></div>
  <div class="pane good"><span class="mark">✓</span><span class="label">After</span>
    <p class="copy" id="gt"></p>
    <div class="more" id="gmore"><p class="detail" id="gd"></p></div>
    <p class="why" id="gw"></p></div>
</div>
css
.stage{width:94%;height:88%;display:flex;gap:4%}
.pane{position:relative;flex:1;border-radius:14px;border:1px solid var(--line);background:var(--surface);padding:16px 14px 12px;display:flex;flex-direction:column;justify-content:center;gap:8px}
.mark{position:absolute;top:10px;right:12px;font:800 16px/1 system-ui;color:var(--accent-2)}
.good .mark{color:var(--accent-3)}
.label{position:absolute;top:10px;left:12px;font:700 10px/1 monospace;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.copy{margin:0;font:600 clamp(11px,2.8vmin,14px)/1.5 -apple-system,sans-serif;color:var(--fg)}
.more{max-height:0;overflow:hidden;transition:max-height .5s ease}
.more.open{max-height:80px}
.detail{margin:6px 0 0;padding-top:6px;border-top:1px dashed var(--line);font:500 11px/1.4 -apple-system,sans-serif;color:var(--muted)}
.why{margin:0;font:500 11px/1.3 -apple-system,sans-serif;color:var(--muted)}
js
const bt = document.getElementById('bt'), bw = document.getElementById('bw');
const gt = document.getElementById('gt'), gd = document.getElementById('gd'), gw = document.getElementById('gw'), gmore = document.getElementById('gmore');
const L = {
  ko: { bt: '요금제는 매월 자동 갱신되며 해지는 다음 결제일 전까지 신청해야 하고 환불은 이용 기간에 비례해 일부만 제공됩니다.', bw: '한 문단에 전부 욱여넣음', gt: '매월 자동 갱신돼요.', gd: '해지는 다음 결제일 전까지, 환불은 이용 기간에 비례해 일부 제공돼요.', gw: '한 줄 요약 + 필요할 때만 펼치는 상세' },
  en: { bt: 'The plan renews monthly, cancellation must be requested before the next billing date, and refunds are partial and prorated by usage.', bw: 'crams everything into one paragraph', gt: 'Renews automatically every month.', gd: 'Cancel before your next billing date. Refunds are partial and prorated.', gw: 'one-line summary + detail on demand' },
};
let lang = 'ko', open = false;
function paint() {
  const t = L[lang];
  bt.textContent = t.bt; bw.textContent = t.bw;
  gt.textContent = t.gt; gd.textContent = t.gd; gw.textContent = t.gw;
  gmore.classList.toggle('open', open);
}
paint();
setInterval(() => { open = !open; if (!open) lang = lang === 'ko' ? 'en' : 'ko'; paint(); }, 2000);

문구도 UI 요소처럼 점진적으로 공개할 수 있습니다(→ progressive-disclosure). 모든 사용자가 세부 조항까지 읽고 싶어 하는 건 아니므로, 핵심 한 줄을 먼저 주고 원하는 사람만 "더 보기"로 나머지를 펼칩니다.

이 방식은 화면을 짧게 유지하면서도 정보를 누락시키지 않는다는 점에서 좋습니다. 다만 중요한 위험 고지·법적 정보를 접어버리면 안 됩니다 — 접는 대상은 "몰라도 되는 세부사항"이지 "알아야 하는데 귀찮은 정보"가 아닙니다.

데모의 ✕는 긴 문단을 통째로 늘어놓고, ✓는 한 줄 요약 뒤에 펼쳐지는 상세 설명을 둡니다.

언제 쓰나

요금제 설명, 환불 정책, 설정 도움말처럼 세부까지 필요한 사람과 아닌 사람이 갈리는 문구에 적용하세요.