브레이크포인트

Breakpoints

화면 폭이 특정 값을 지나는 순간 레이아웃을 통째로 바꾸는 기준선. 모바일·태블릿·데스크톱을 가르는 경계입니다.

다른 이름: Media query breakpointsResponsive breakpoints
···
html
<div class="device" id="device">
  <div class="topbar" id="topbar">
    <span class="logo"></span>
    <div class="menu" id="menu"></div>
  </div>
  <div class="grid" id="grid"></div>
</div>
<div class="label" id="label">Mobile · 375px</div>
css
.stage-wrap{}
.device{position:relative;width:70%;max-width:560px;border:2px solid var(--line);border-radius:10px;overflow:hidden;
  background:var(--surface);transition:width 2.6s cubic-bezier(.4,0,.2,1)}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-bottom:1px solid var(--line)}
.logo{width:20px;height:20px;border-radius:5px;background:var(--accent)}
.menu{display:flex;gap:6px}
.menu i{width:22px;height:6px;border-radius:3px;background:var(--line)}
.grid{display:grid;grid-template-columns:1fr;gap:8px;padding:10px}
.grid b{height:26px;border-radius:6px;background:var(--bg);border:1px solid var(--line)}
.device.md .grid{grid-template-columns:1fr 1fr}
.device.lg .grid{grid-template-columns:1fr 1fr 1fr}
.device.lg .menu{gap:10px}
.label{margin-top:10px;text-align:center;font-size:11px;color:var(--muted);letter-spacing:.04em}
js
const device = document.getElementById('device');
const grid = document.getElementById('grid');
const menu = document.getElementById('menu');
const label = document.getElementById('label');
for (let i = 0; i < 6; i++) grid.appendChild(document.createElement('b'));
for (let i = 0; i < 3; i++) menu.appendChild(document.createElement('i'));
const steps = [
  { cls: '', width: '38%', text: 'Mobile · 375px' },
  { cls: 'md', width: '62%', text: 'Tablet · 768px' },
  { cls: 'lg', width: '92%', text: 'Desktop · 1280px' },
];
let i = 0;
function apply() {
  device.className = 'device ' + steps[i].cls;
  device.style.width = steps[i].width;
  label.textContent = steps[i].text;
  i = (i + 1) % steps.length;
}
apply();
setInterval(apply, 2000);

`@media (min-width: 768px) { … }`처럼 특정 폭 이상(또는 이하)에서만 적용되는 스타일을 정의합니다. 흔히 쓰는 기준값은 대략 640/768/1024/1280px 부근인데, 이는 특정 기기 해상도를 딱 맞춘 숫자가 아니라 "그 언저리에서 콘텐츠가 좁아 보이기 시작하는 지점"을 경험적으로 잡은 값입니다.

요즘 권장되는 방식은 기기 종류(폰/태블릿/데스크톱)가 아니라 콘텐츠 자체가 좁아 보이기 시작하는 지점에서 브레이크포인트를 잡는 것입니다 — 브라우저 창을 실제로 줄여보면서 "여기서 줄바꿈이 이상해진다"는 지점을 찾는 식입니다.

또한 "모바일 우선(mobile-first)" 설계가 기본입니다. 기본 스타일을 좁은 화면 기준으로 작성하고 `min-width` 쿼리로 점점 넓혀가는 게, 넓은 화면을 기준으로 `max-width`로 좁혀가는 것보다 유지보수가 쉽습니다.

언제 쓰나

레이아웃 구조 자체(칼럼 수, 내비게이션 방식)가 바뀌어야 할 때 씁니다. 한 컴포넌트만 자기 자리에 맞게 바뀌면 되는 경우엔 컨테이너 쿼리가 더 적합합니다.