텍스트 확대·리플로우

Text Resize & Reflow

브라우저 확대를 200%까지 키워도 텍스트가 잘리거나 가로 스크롤이 생기지 않고 한 열로 재배치되어야 한다는 원칙.

다른 이름: 200% zoomReflow
···
html
<div class="stage">
  <div class="pane">
    <div class="tag">100%</div>
    <div class="cols">
      <div class="col"><div class="h"></div><div class="p"></div><div class="p"></div></div>
      <div class="col"><div class="h"></div><div class="p"></div><div class="p"></div></div>
    </div>
  </div>
  <div class="pane">
    <div class="tag">200% · reflow</div>
    <div class="cols one">
      <div class="col wide"><div class="h"></div><div class="p"></div><div class="p"></div><div class="p"></div></div>
    </div>
  </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);display:flex;flex-direction:column;padding:10px 8% 8px;gap:8%;overflow:hidden}
.tag{flex:none;font:700 10.5px/1 ui-monospace,monospace;color:var(--muted)}
.cols{flex:1;min-height:0;display:flex;gap:8%}
.cols.one{flex-direction:column;gap:10%}
.col{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:10%}
.h{height:16%;border-radius:4px;background:var(--fg);opacity:.7;flex:none}
.p{height:12%;border-radius:4px;background:var(--muted);opacity:.3;flex:none}
.wide .h{height:22%}
.wide .p{height:16%}

저시력 사용자는 브라우저 확대(Cmd/Ctrl + "+") 기능으로 글자를 200%까지 키워서 봅니다. 이때 텍스트만 커지고 레이아웃은 그대로면 카드가 겹치거나 글자가 박스 밖으로 잘려 나갑니다. 고정 px 너비, overflow: hidden으로 감싼 텍스트 박스가 흔한 원인입니다.

잘 만든 반응형 레이아웃이라면 확대도 일종의 좁은 화면 대응으로 처리됩니다 — 320 CSS px 너비 기준으로 가로 스크롤 없이 한 열로 재배치되면 됩니다(1.4.10 Reflow). 별개로 1.4.4는 콘텐츠나 기능 손실 없이 텍스트만 200%까지 키울 수 있어야 한다는 요건입니다.

데모 왼쪽은 100% 기본 배율의 2열 레이아웃, 오른쪽은 200%로 확대된 뒤 한 열로 재배치되어 텍스트가 잘리지 않고 전부 읽히는 모습입니다.

언제 쓰나

레이아웃에 고정 px 너비나 overflow: hidden 텍스트 박스를 쓰기 전에 200% 확대에서 어떻게 되는지 한 번 눌러서 확인하세요. rem·%·clamp() 기반 크기가 이 문제를 대부분 예방합니다.