| name | responsive-design |
| description | 프론트엔드 UI 작업 시 반응형 디자인을 적용합니다. PC를 기본으로 작성하되 모바일도 반드시 함께 고려합니다. FE 컴포넌트 작성/수정 시 항상 참고합니다. |
| triggers | ["컴포넌트 작성","컴포넌트 수정","UI 작업","프론트엔드","반응형","모바일"] |
반응형 디자인 컨벤션
개요
모든 프론트엔드 UI 작업은 PC(데스크탑)를 기본으로 작성하고, 모바일에서도 사용 가능하도록 반드시 함께 고려합니다.
새 컴포넌트를 만들거나 기존 컴포넌트를 수정할 때 모바일 레이아웃을 빠뜨리지 않도록 반드시 이 가이드를 따릅니다.
Tailwind CSS 브레이크포인트
| 접두사 | 최솟값 | 대상 기기 |
|---|
| (없음) | 0px | 공통 기본값 |
sm: | 640px | 큰 모바일 / 소형 태블릿 |
md: | 768px | 태블릿 |
lg: | 1024px | 데스크탑 (주요 타겟) |
xl: | 1280px | 와이드 데스크탑 |
기본 원칙
PC 기준으로 작성, 모바일은 max-width 또는 작은 브레이크포인트로 대응
<div className="grid grid-cols-3 gap-6 p-8">
<div className="grid grid-cols-3 gap-6 p-8 max-md:grid-cols-1 max-md:p-4">
max-md: = md(768px) 미만에서 적용 — Tailwind v3.2+의 max-width variant
레이아웃
<div className="flex flex-row gap-6 max-md:flex-col max-md:gap-4">
<div className="grid grid-cols-3 gap-6 max-md:grid-cols-1">
텍스트 크기
<h1 className="text-4xl font-bold max-md:text-2xl">
<p className="text-base max-md:text-sm">
여백
<section className="px-16 py-12 max-md:px-4 max-md:py-6">
컴포넌트 유형별 체크리스트
네비게이션
<nav className="w-56 shrink-0 max-md:hidden"> {}
<button className="hidden max-md:flex">메뉴</button> {/* 모바일: 햄버거 버튼 */}
버튼 / 인터랙티브 요소
<button className="px-4 py-2 max-md:min-h-[44px] max-md:min-w-[44px]">
폼
<div className="flex flex-row gap-4 max-md:flex-col">
<input className="max-md:w-full" />
<button className="max-md:w-full">제출</button>
</div>
테이블 / 데이터 목록
<div className="overflow-x-auto">
<table className="min-w-full max-md:min-w-[600px]">
모달 / 다이얼로그
<div className="fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 w-[480px] max-md:inset-0 max-md:w-full max-md:translate-x-0 max-md:translate-y-0">
PC 전용 / 모바일 전용 노출
<div className="block max-md:hidden">PC 전용</div>
<div className="hidden max-md:block">모바일 전용</div>
접근성
<button
type="button"
aria-label="메뉴 열기"
className="rounded-md p-2 focus-visible:ring-2 focus-visible:ring-ring"
>
<MenuIcon className="h-5 w-5" />
</button>
작업 완료 체크리스트
컴포넌트 작성/수정 후 아래 항목을 반드시 확인합니다.