🎉 디자인 시스템 v5.0 — 본문 16px · 컴포넌트 47종 · 스타터 킷 제공
디자인레이아웃 & 반응형

8. 레이아웃 & 반응형

8-1. 브레이크포인트

이름범위대상
mobile~ 639px폰
tablet640 ~ 1023px태블릿
desktop1024 ~ 1439px노트북
wide1440px ~대형 모니터
--bp-mobile:639px; --bp-tablet:1023px; --bp-desktop:1439px;

8-2. 컨테이너 — 허용 패턴 카탈로그 〔v5.0 개정〕

v4.0은 “12컬럼 · 1200px 단일”이었습니다. 문서형 화면은 너무 넓고 데이터 대시보드는 너무 좁아, 앱들이 각자 벗어나면서 시스템이 무력해졌습니다. v5.0은 강제 규칙을 3개로 줄이고 컨테이너를 4종으로 넓힙니다.

강제되는 것은 이 3개뿐: ① 간격 4px 단위 ② 터치 타깃 44px ③ 가로 스크롤 금지

컨테이너최대폭용도근거
--container-narrow720px문서·읽기 중심Bootstrap md와 동일 폭 · 본문 가독 65~75자
--container-max1200px표준 앱·대시보드기존 기본값 유지 (Bootstrap xl 1140 ~ Tailwind xl 1280 사이)
--container-wide1440px데이터 밀집 대시보드Tailwind 2xl(1536) 계열 와이드 폭
full없음에디터·맵·풀블리드좌우 패딩만 유지

모바일 안정성: 전부 max-width이므로 좁은 화면에서는 자동으로 100% + 좌우 패딩(desktop 40 / tablet 24 / mobile 16px)으로 동작합니다.

그리드 컬럼 수·사이더 폭 등은 앱 소관입니다(§2-5). 다만 폭은 4px 그리드에 맞춥니다.

8-3. 안정성 규칙

  • 뷰포트 메타 필수: <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
  • 모바일 안전영역: env(safe-area-inset-*) — 노치·홈바 대응
  • 터치 타깃 최소 44×44px (--touch-target-min)
  • 가로 스크롤 금지 — 표는 overflow-x:auto 컨테이너로 감싸기
  • 이미지 반응형: max-width:100%; height:auto

8-4. 텍스트 팽창 규칙 〔v5.0 신설〕

한국어는 세계에서 가장 짧은 언어 축에 듭니다. 유럽어로 번역하면 +30~40%, 짧은 라벨은 최대 7배까지 길어집니다.

저장(2자) → Enregistrer(11자) · 승인 대기(5자) → En attente d’approbation(24자)

규칙내용
버튼·탭·메뉴고정 width 금지 — min-width + 좌우 패딩만
모든 컨트롤고정 height 금지 — min-height:var(--control-height)
말줄임(ellipsis)표 셀에서만 허용(.jt-ellipsis). 버튼·메뉴·알림에 금지
사이더 메뉴 라벨2줄 줄바꿈 허용 설계 (높이 고정 금지)
판정 배지예외 — white-space:nowrap. “부적/합”처럼 잘리면 안 되는 정보

8-5. 모바일 내비게이션 — 하단 탭바 〔v5.0 신설〕

모바일에서 주요 메뉴를 상단에 두지 않습니다. 화면이 커지면서 엄지가 상단에 닿지 않기 때문입니다.

주요 메뉴 개수패턴
5개 이하하단 탭바 (.jt-tabbar) — 아이콘 + 라벨
6개 이상하단 탭바 4개 + “더보기” → 드로어, 또는 드로어 단독
  • env(safe-area-inset-bottom)으로 iPhone 홈바를 피합니다.
  • 탭바가 있으면 본문 하단에 자동으로 여백이 생깁니다(body:has(.jt-tabbar) .jt-main). 앱이 따로 계산할 필요 없습니다.
  • 탭바 아이콘은 SVG 방식(.jt-ico-mask)을 쓰세요 — CDN이 막혀도 항상 보입니다(§10-2).