Refactor: Consolidate directory structure into 5 main categories and update metadata
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
# [[웹 접근성 및 성능 최적화|웹 접근성 및 성능 최적화]]
|
||||
|
||||
## 📌Brief 시
|
||||
웹 접근성 및 성능 최적화는 모든 사용자 환경과 기기에서 디지털 제품이 빠르고 일관되며 장벽 없이 작동하도록 만드는 핵심 웹 설계 실무입니다 [1, 2]. 성능 측면에서는 CSS 렌더링 차단을 방지하고 리플로우(Reflow)와 리페인트(Repaint)를 줄임으로써 코어 웹 바이탈([[Core Web Vitals|Core Web Vitals]]) 지표를 높이는 데 집중합니다 [3-6]. 동시에 접근성 측면에서는 시각적 명확성을 확보하고, 사용자의 화면 확대나 애니메이션 축소 설정을 존중하여 포용력 있는 사용자 경험(UX)을 구축하는 것을 목표로 합니다 [2, 7, 8].
|
||||
|
||||
## 📖 Core Content
|
||||
**성능 최적화 (Performance [[Optimization|Optimization]])**
|
||||
* **CSS 로딩 및 렌더링 최적화:** 브라우저는 CSS를 모두 파싱하기 전까지 페이지 렌더링을 차단합니다 [4]. 이를 최소화하기 위해 사용하지 않는 CSS를 제거하고 파일을 축소 및 압축해야 하며, 미디어 쿼리를 사용해 화면 조건에 맞는 CSS 파일만 렌더링을 차단하도록 분리할 수 있습니다 [4, 9, 10]. 또한, `rel="preload"`를 사용해 중요한 폰트, CSS, 이미지 등의 핵심 자원을 우선적으로 다운로드하도록 브라우저에 지시해야 합니다 [11, 12].
|
||||
* **레이아웃 연산 격리 및 최적화:** CSS Containment 모듈의 `contain` 및 `content-visibility` 속성을 사용하면 페이지의 특정 부분을 격리하여 브라우저가 뷰포트 내에 필요할 때만 렌더링을 수행하게 함으로써 렌더링 성능을 크게 향상시킬 수 있습니다 [13, 14].
|
||||
* **리플로우(Reflow)와 리페인트(Repaint) 최소화:** `width`, `height`, `margin`, `box-shadow` 등의 레이아웃이나 시각적 속성을 애니메이션으로 처리하면 브라우저가 화면을 계속 다시 계산하고 그려야 하므로 심각한 성능 저하가 발생합니다 [5, 15, 16]. 부드러운 애니메이션을 구현하려면 GPU 가속의 이점을 받을 수 있는 `transform`과 `opacity` 속성만을 사용해야 합니다 [15, 17-19].
|
||||
* **미디어 및 폰트 성능 향상:** 코어 웹 바이탈의 LCP(최대 콘텐츠 풀 페인트)와 CLS(누적 레이아웃 이동)를 개선하기 위해 이미지에 WebP나 AVIF 같은 최신 포맷을 사용하고, `width`, `height`, 또는 `aspect-ratio` 속성을 명시하여 레이아웃 흔들림을 방지해야 합니다 [6, 20-22]. 폰트의 경우 `unicode-range`를 통한 서브세팅으로 필요한 글리프(glyph)만 로드하고, `font-display: swap`을 활용해 로드 전에도 텍스트가 보이도록 처리합니다 [13, 23].
|
||||
|
||||
**웹 접근성 (Web [[Accessibility|Accessibility]])**
|
||||
* **유동적 타이포그래피([[Fluid Typography|Fluid Typography]])의 확대 보장:** 글꼴 크기를 뷰포트 단위(`vw` 등)로만 설정하면 사용자가 브라우저에서 텍스트 확대를 시도할 때 크기가 커지지 않아 WCAG(웹 콘텐츠 접근성 지침) 기준(텍스트 최소 200% 확대)을 위반하게 됩니다 [8]. 이 문제를 해결하려면 `clamp()` 함수 내부에 `em`이나 `rem` 단위와 뷰포트 단위를 조합하여 계산(`calc()`)함으로써, 사용자의 기본 글꼴 크기 설정과 확대(Zoom) 기능을 모두 보장해야 합니다 [24-26].
|
||||
* **안전하고 제어 가능한 애니메이션:** 화려하거나 과도한 움직임은 전정기관 장애가 있는 사용자에게 메스꺼움이나 주의 산만을 유발할 수 있습니다 [27, 28]. `prefers-reduced-motion` 미디어 쿼리를 사용하여 운영체제에서 애니메이션 축소를 설정한 사용자에게는 움직임을 제거하거나 최소화한 스타일을 제공해야 하며, 긴 텍스트 블록에 대한 애니메이션 적용은 피해야 합니다 [27, 29, 30].
|
||||
* **모바일 및 보조 기기 호환성 확보:** 터치 인터페이스에서는 오작동을 막기 위해 최소 44x44px ~ 48x48px 크기의 클릭 가능한 영역(패딩 활용)을 제공해야 합니다 [31-33]. 또한, 화면 판독기(Screen Reader)와 키보드 사용자를 위해 명확한 포커스(Focus) 상태 제공, 시맨틱 HTML 태그 사용, 적절한 색상 대비 유지, 의미 있는 대체 텍스트(alt) 속성이 반드시 포함되어야 합니다 [2, 34].
|
||||
|
||||
## 🔗 Knowledge Connections
|
||||
- **Related Topics:** [[CSS 구조 설계 방식|CSS 구조 설계 방식]], 반응형 디자인, 애니메이션 (transition / keyframes), Core Web Vitals, [[리플로우 및 리페인트 (Reflow & Repaint)|리플로우 및 리페인트(Reflow & Repaint]]
|
||||
- **Projects/Contexts:** 디자인 시스템 기반의 확장 가능한 프론트엔드 아키텍처 구축
|
||||
- **Contradictions/Notes:** 소스 자료들은 애니메이션 성능 최적화를 위해 브라우저에 변경을 미리 알리는 `will-change` 속성의 사용을 제안하지만, 동시에 이를 남용하면 너무 많은 요소에 브라우저 자원을 미리 할당하여 오히려 성능 저하를 초래할 수 있으므로 '최후의 수단'으로 신중히 사용해야 한다고 경고하고 있습니다 [35, 36].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-26*
|
||||
Reference in New Issue
Block a user