# [[Responsive Web Design]]

## 📌[[ brief]] Summary
반응형 웹 디자인(Responsive Web Design)은 모바일, 태블릿, 데스크톱 등 다양한 기기와 화면 크기에 맞춰 레이아웃과 콘텐츠가 유동적으로 변환되는 인터페이스를 구축하는 방식이다 [1, 2]. 단일 코드베이스로 모든 기기에 대응하며, 일관된 사용자 경험(UX)과 빠른 로딩 속도를 제공하는 것을 목표로 한다 [1-3]. 최근에는 모바일 우선 인덱싱(Mobile-First Indexing)과 코어 웹 바이탈([[Core Web Vitals]]) 등 검색엔진 최적화(SEO)와 접근성 측면에서도 필수적인 요소로 평가받고 있다 [1, 4-6].

## 📖 Core Content
*   **핵심 원칙 및 2025-2026년 표준 (Core [[Principles]])**
    *   **유동적 그리드(Fluid Grids):** 픽셀(px) 대신 퍼센트(%), `fr` 등 상대적인 단위를 사용하여 화면에 맞게 크기가 조정되는 그리드를 구축한다 [7-9]. 브레이크포인트에만 의존하지 않도록 [[Flexbox]](1차원 배열)와 [[CSS Grid]](2차원 배열)를 활용해 자연스러운 콘텐츠 재배치를 유도한다 [10-14].
    *   **컨테이너 쿼리([[Container Queries]]):** 2026년 기준 뷰포트(전체 화면)가 아닌 부모 요소(컨테이너)의 너비에 따라 컴포넌트가 반응하게 만드는 컨테이너 쿼리(`@container`)가 표준 기술로 자리 잡았다 [15-19]. 이는 컴포넌트 단위의 재사용성을 높여 디자인 시스템과 완벽하게 맞물리게 한다 [15, 18, 19].
    *   **유동적 타이포그래피([[Fluid Typography]]):** `clamp()` 함수를 사용하여 폰트 크기의 최소값, 뷰포트나 컨테이너 기반의 스케일링 값, 최대값을 지정함으로써 화면 크기에 따라 폰트가 부드럽게 조정되도록 한다 [19-21].
    *   **유연한 미디어(Flexible Media):** 이미지와 비디오가 컨테이너를 벗어나지 않도록 `max-width: 100%; height: auto;`를 기본으로 적용한다 [20, 22]. 해상도 및 화면 크기에 맞는 이미지를 제공하기 위해 `srcset`과 `sizes`를 사용하고, WebP/AVIF 등 차세대 포맷을 채택한다 [23, 24].
    *   **콘텐츠 중심의 브레이크포인트:** 특정 디바이스 크기 목록에 맞추는 것이 아니라, 실제 콘텐츠가 깨지는 지점을 기준으로 미디어 쿼리(Media Queries) 분기점을 설정한다 [23, 25].

*   **설계 및 구현 모범 사례 (Best Practices)**
    *   **모바일 우선 설계([[Mobile-First Approach]]):** 가장 작은 화면을 기준으로 핵심 콘텐츠를 먼저 설계하고 CSS에서는 `min-width` 미디어 쿼리를 사용하여 큰 화면으로 확장해 나가는 방식이다 [26-29]. 
    *   **점진적 공개(Progressive Disclosure)와 내비게이션:** 제한된 모바일 화면에서는 아코디언, 탭 등을 사용하여 콘텐츠를 점진적으로 표시하고, 우선순위가 낮은 내비게이션은 햄버거 메뉴나 하단 시트로 숨기는 것이 효율적이다 [30-34].
    *   **접근성 보장([[Accessibility]]):** 모바일 환경에서는 44x44px 혹은 48x48px 이상의 충분한 터치 영역을 확보해야 하며, 아이콘이나 로고에는 품질 저하 없이 무한 확장되는 SVG를 사용하는 것이 좋다 [30, 32, 35-38].
    *   **성능 최적화(Optimized Performance):** LCP, CLS, INP 지표 개선을 위해 스크롤 아래 이미지를 지연 로딩(lazy-load)하고 명시적인 너비/높이 값을 지정해 누적 레이아웃 이동(CLS)을 방지해야 한다 [6, 23, 35, 39, 40].
    *   **컴포넌트 중심 사고(Build Components, Not Pages):** 페이지 단위의 반응형 설계를 지양하고, 각각의 UI 요소(버튼, 카드 등)가 스스로의 맥락에 반응할 수 있도록 독립적인 컴포넌트로 구축해야 일관성과 유지보수성이 향상된다 [31, 41].

## 🔗 Knowledge Connections
- **Related Topics:** [[CSS Grid]], [[Flexbox]], [[Container Queries]], [[Design[[ system]]s]], [[Mobile-First Design]]
- **Projects/Contexts:** 대규모 프론트엔드 프로젝트에서 일관성과 유지보수성을 확보하기 위해, 페이지 단위가 아닌 컴포넌트 수준에서 반응형 동작을 내재화하여 디자인 시스템을 구축하는 실무 맥락.
- **Contradictions/Notes:** 유동적 타이포그래피 구현 시 뷰포트/컨테이너 단위(예: `vw`, `cqi`)만을 단독으로 사용할 경우 사용자의 화면 확대/축소 설정이나 기본 폰트 크기를 무시하게 되어 WCAG 접근성 기준을 위반할 위험이 있으므로, 반드시 `calc()`나 `clamp()`를 활용하여 베이스 폰트(em, rem 등) 기반의 제어 권한을 사용자에게 보장해야 한다고 소스들은 경고합니다 [42-47].

---
*Last updated: 2026-04-26*