CSS 아키텍처 및 구성
BEM, OOCSS 또는 SMACSS 와 같은 CSS 방법론을 사용하는 이점은 무엇인가요?
답변:
CSS 방법론은 대규모 스타일시트에 구조, 재사용성 및 유지보수성을 제공합니다. 이름 충돌을 방지하고 개발자 간의 협업을 개선하며, 클래스 이름 지정 및 구성에 대한 명확한 규칙을 정의하여 시간이 지남에 따라 프로젝트를 확장하기 쉽게 만듭니다.
BEM (Block, Element, Modifier) 의 핵심 원칙을 설명하고 예시를 들어주세요.
답변:
BEM 은 CSS 클래스 이름을 세 부분으로 구성합니다: Block (독립적인 엔티티), Element (블록의 일부), Modifier (블록 또는 요소의 플래그). 이를 통해 매우 구체적이고 읽기 쉬운 클래스 이름을 생성하여 선택자 특이성 문제를 줄입니다. 예시: button, button__icon, button--primary.
OOCSS (Object-Oriented CSS) 는 어떻게 재사용성과 유지보수성을 촉진하나요?
답변:
OOCSS 는 두 가지 주요 원칙을 촉진합니다: 구조와 스킨 분리, 컨테이너와 콘텐츠 분리. 이는 .media-object와 같이 다양한 컨텍스트에서 적용될 수 있는 재사용 가능한 '객체'를 생성하여 코드 중복을 줄이고 스타일 업데이트를 더 쉽게 만듭니다.
SMACSS (Scalable and Modular Architecture for CSS) 란 무엇이며 주요 범주는 무엇인가요?
답변:
SMACSS 는 CSS 규칙을 Base, Layout, Modules, State, Theme 의 다섯 가지 유형으로 분류하는 CSS 개발 가이드입니다. 이 분류는 스타일시트를 논리적으로 구성하는 데 도움이 되어 대규모 애플리케이션에서 확장성과 관리 용이성을 높입니다.
전역 CSS 접근 방식 대신 CSS Modules 를 사용하기로 선택하는 경우는 언제인가요?
답변:
CSS Modules 는 기본적으로 CSS 클래스에 대한 로컬 범위를 제공하여 이름 충돌을 방지하고 스타일이 컴포넌트 내에 캡슐화되도록 합니다. 이는 이름 충돌을 피하고 컴포넌트별로 스타일을 관리하려는 React 또는 Vue 와 같은 컴포넌트 기반 아키텍처에 이상적입니다.
프로젝트에서 CSS 전처리기 (예: Sass, Less) 를 사용하는 이점은 무엇인가요?
답변:
CSS 전처리기는 변수, 중첩, 믹스인, 함수 및 부분 (partials) 과 같은 기능을 제공하여 코드 구성, 재사용성 및 유지보수성을 향상시킵니다. 더 동적이고 프로그래밍 가능한 CSS 를 허용하여 반복을 줄이고 복잡한 스타일시트를 더 쉽게 관리할 수 있습니다.
'Critical CSS'의 개념과 성능에 중요한 이유를 설명해주세요.
답변:
Critical CSS 는 웹페이지의 'above-the-fold' 콘텐츠를 즉시 렌더링하는 데 필요한 최소한의 CSS 를 의미합니다. 이 CSS 를 HTML 에 직접 인라인 (inlining) 하면 렌더링 차단 요청이 줄어들어 특히 모바일 장치에서 인식되는 페이지 로드 속도와 사용자 경험이 향상됩니다.
대규모 프로젝트에서 CSS 파일을 어떻게 구성하나요?
답변:
일반적인 구성에는 방법론 (예: BEM, SMACSS 범주), 기능 또는 컴포넌트별로 파일을 구성하는 것이 포함됩니다. 여기에는 종종 리셋 및 타이포그래피를 위한 base/ 폴더, 재사용 가능한 UI 요소를 위한 components/ 또는 modules/, 그리드 및 구조 스타일을 위한 layout/, 단일 목적 클래스를 위한 utilities/가 포함됩니다.
CSS 스타일 가이드 또는 디자인 시스템의 목적은 무엇인가요?
답변:
CSS 스타일 가이드 또는 디자인 시스템은 디자인 원칙, UI 컴포넌트 및 스타일링 규칙에 대한 단일 진실 공급원 (single source of truth) 을 제공합니다. 제품 전반에 걸쳐 일관성을 보장하고, 개발을 간소화하며, 협업을 개선하고, 확립된 패턴을 문서화하여 신규 팀원 온보딩을 더 쉽게 만듭니다.
'Utility-first CSS'의 개념과 장단점을 설명해주세요.
답변:
Utility-first CSS 는 UI 를 거의 전적으로 작고 단일 목적의 유틸리티 클래스 (예: flex, pt-4, text-center) 로 구성하는 것을 포함합니다. 장점으로는 빠른 개발, 더 작은 CSS 번들, 쉬운 유지보수가 있습니다. 단점으로는 복잡한 HTML, 복잡한 반응형 패턴의 어려움, 신규 개발자를 위한 가파른 학습 곡선이 있을 수 있습니다.
CSS 아키텍처 내에서 반응형 디자인을 어떻게 처리하나요?
답변:
반응형 디자인은 일반적으로 미디어 쿼리 (media queries) 를 사용하여 처리되며, 종종 컴포넌트별 스타일 또는 전용 반응형 파일에 통합됩니다. 접근 방식에는 모바일 우선 (기본적으로 모바일 스타일을 사용하고 더 큰 중단점 추가) 또는 데스크톱 우선이 포함되어 다양한 화면 크기에 걸쳐 레이아웃이 원활하게 조정되도록 합니다.
CSS 특이성 문제를 관리하기 위한 몇 가지 전략은 무엇인가요?
답변:
전략에는 낮은 특이성 선택자 사용 (ID 보다 클래스), 일관된 명명 규칙 (BEM 과 같은) 준수, !important의 절대적으로 필요한 경우가 아니면 피하기, 일반 규칙 뒤에 더 구체적인 규칙이 오도록 CSS 구성 등이 포함됩니다. CSS 방법론은 본질적으로 특이성 관리에 도움이 됩니다.