SCSS 중첩은 HTML 구조와 동일하게 CSS를 작성할 수 있게 해주는 혁신적 기능입니다! 가독성과 구조화를 극대화할 수 있어요.
중첩이란 무엇인가요?
SCSS 중첩은 CSS 규칙을 다른 규칙 안에 포함시키는 기능입니다. HTML의 계층 구조와 동일하게 CSS를 작성할 수 있어서 코드의 의미를 직관적으로 파악할 수 있습니다.
- HTML 구조와 일치하는 직관적 코드
- 관련 스타일을 논리적으로 그룹화
- 코드 중복 감소와 유지보수 향상
- BEM 방법론과의 완벽한 조화
기본 중첩 사용법
1. 기본 선택자 중첩
가장 기본적인 중첩 형태로, 부모 요소 안에 자식 요소의 스타일을 정의합니다.
// SCSS - 중첩 사용 .navbar { background-color: #2c3e50; padding: 1rem; ul { list-style: none; margin: 0; display: flex; li { margin-right: 2rem; a { color: white; text-decoration: none; } } } }
2. 부모 선택자 참조 (&)
&(앰퍼샌드) 기호는 SCSS의 가장 강력한 기능 중 하나입니다!
& 기호의 핵심 활용법:
- 가상 클래스: :hover, :focus, :active 등의 상태 스타일
- 가상 요소: ::before, ::after 등의 컨텐츠 생성
- 수정자 클래스: BEM 방법론의 modifier 구현
- 조합 선택자: 인접, 형제, 자식 선택자와의 조합
// 가상 클래스와 상태 관리 .button { background-color: #3498db; color: white; padding: 12px 24px; border: none; cursor: pointer; &:hover { background-color: #2980b9; transform: translateY(-2px); } &--large { padding: 16px 32px; } }
고급 중첩 기법
속성 중첩 (Property Nesting)
같은 네임스페이스를 가진 CSS 속성들을 중첩으로 관리할 수 있습니다!
// 속성 중첩 예시 .text-style { font: { family: 'Inter', sans-serif; size: 1.125rem; weight: 600; } border: { width: 2px; style: solid; color: #3498db; } }
미디어 쿼리와 중첩
반응형 디자인에서 중첩은 더욱 빛을 발합니다!
// 반응형 중첩 패턴 .hero-section { padding: 4rem 2rem; h1 { font-size: 3rem; @media (max-width: 768px) { font-size: 2.5rem; } } }
실전 예제: 카드 컴포넌트
실제 프로젝트에서 자주 사용되는 카드 컴포넌트를 중첩을 활용해 체계적으로 구현해보겠습니다.
// 완벽한 카드 컴포넌트 구현 .card { background: white; border-radius: 12px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); overflow: hidden; transition: all 0.3s ease; &:hover { transform: translateY(-4px); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15); } &__header { position: relative; height: 200px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); img { width: 100%; height: 100%; object-fit: cover; } } &__body { padding: 1.5rem; .title { font-size: 1.25rem; font-weight: 700; color: #2c3e50; margin-bottom: 0.5rem; } .description { color: #7f8c8d; line-height: 1.6; margin-bottom: 1rem; } } &__footer { padding: 0 1.5rem 1.5rem; display: flex; justify-content: space-between; align-items: center; .button { background: #3498db; color: white; padding: 0.5rem 1rem; border: none; border-radius: 6px; cursor: pointer; &:hover { background: #2980b9; } } } &--featured { border: 2px solid #f39c12; .card__header { background: linear-gradient(135deg, #f39c12 0%, #e67e22 100%); } } }
모범 사례
적정 중첩 깊이 유지하기
과도한 중첩은 피하고 3-4단계 이하로 유지하세요!
중첩 모범 사례:
- 3-4단계 제한: 과도한 중첩으로 인한 복잡도 증가 방지
- 의미 있는 중첩: HTML 구조와 실제로 연관된 경우에만 사용
- 컴포넌트 분리: 복잡한 구조는 별도 컴포넌트로 관리
// ❌ 나쁜 예시: 과도한 중첩 .page { .container { .section { .article { .content { color: red; } } } } } // ✅ 좋은 예시: 적절한 중첩 .article { &__title { font-size: 2rem; } &__content { p { margin-bottom: 1rem; } } }
SCSS 중첩 마스터하기
SCSS 중첩을 마스터하면 더 체계적이고 읽기 쉬운 CSS를 작성할 수 있습니다!
- HTML 구조와 일치하는 직관적 코드 작성
- & 기호로 강력한 선택자 조합 구현
- BEM 방법론과의 완벽한 조화
- 적절한 중첩 깊이로 가독성 유지
중첩은 SCSS의 가장 직관적이면서도 강력한 기능입니다. 올바르게 활용해서 전문적인 CSS 개발을 시작해보세요!