부모 선택자 &의 역할과 사용법 - by. UXKM

  • Publishing
  • SCSS
  • SCSS 기본 문법
  • 부모 선택자 &의 역할과 사용법
요약 설명

부모 선택자 참조 기호(&)는 SCSS에서 부모 선택자를 참조할 때 사용하는 특수 기호입니다.
&를 사용하면 가상 클래스(:hover, :active 등)를 중첩하거나, BEM 네이밍을 간결하게 작성할 수 있습니다.

이 페이지에서는 & 기호의 기본 개념부터 다양한 사용 패턴, 실제 활용 예시, 그리고 주의사항까지 상세히 알아봅니다.

부모 선택자 참조 기호(&)란?

& 기호는 SCSS에서 부모 선택자를 참조할 때 사용하는 특수 문자입니다.
컴파일 시 &부모 선택자로 치환되어 최종 CSS 선택자가 완성됩니다.

& 기호의 기본 개념

&"현재 선택자의 부모"를 의미합니다.
중첩된 선택자 안에서 &를 사용하면 부모 선택자를 참조할 수 있습니다.

위 코드에서 &:hover부모 선택자인 .button과 결합되어 .button:hover가 됩니다.

& 없이 작성한 경우

&를 사용하지 않으면 어떻게 되는지 비교해봅니다.

& 없이 작성하면 공백이 생겨 자식 선택자가 되어버립니다.
.button :hover는 "button 안의 모든 요소에 hover"를 의미하므로, 의도한 대로 동작하지 않습니다.

& 기호의 다양한 사용 패턴

& 기호는 다양한 상황에서 활용할 수 있습니다. 가장 많이 사용되는 패턴들을 살펴봅니다.

가상 클래스와 함께 사용

&가상 클래스(:hover, :active, :focus 등)와 함께 자주 사용됩니다.

이렇게 작성하면 버튼의 모든 상태 스타일을 한 곳에 모아 관리할 수 있어 유지보수가 편리합니다.

가상 요소와 함께 사용

&가상 요소(::before, ::after 등)와도 함께 사용할 수 있습니다.

BEM 네이밍과 함께 사용

&BEM1)(Block Element Modifier) 방법론과 함께 사용할 때 특히 유용합니다.
BEM의 요소(Element)와 수정자(Modifier)를 간결하게 작성할 수 있습니다.

1) BEM이란?
BEM은 CSS 클래스 네이밍 방법론으로, Block(블록), Element(요소), Modifier(수정자) 세 가지 개념으로 구성 요소를 명명합니다. 예를 들어 .card__title--large에서 card는 블록, title은 요소, large는 수정자입니다. BEM을 사용하면 클래스 이름만 봐도 구조와 역할을 쉽게 파악할 수 있어 유지보수가 쉬워집니다.

BEM 방법론은 큰 프로젝트에서 CSS 클래스 이름을 체계적으로 관리하기 위한 방법입니다. SCSS의 & 기호를 사용하면 BEM 네이밍을 더욱 간결하고 읽기 쉽게 작성할 수 있습니다.

BEM Element 작성

&__element 형태로 요소를 작성합니다.

위 코드는 컴파일되면 .card__title, .card__body, .card__link가 됩니다.

BEM Modifier 작성

&--modifier 형태로 수정자를 작성합니다.

위 코드는 컴파일되면 .button--primary, .button--secondary, .button--large가 됩니다.

복합 선택자와 함께 사용

&여러 선택자와 조합하여 사용할 수 있습니다.

이렇게 작성하면 여러 클래스가 동시에 적용된 상태의 스타일을 명확하게 정의할 수 있습니다.

문맥 선택자와 함께 사용

&부모 요소의 선택자와 조합하여 사용할 수도 있습니다.

위 코드는 컴파일 시 아래 예제와 같은 형태로 변환됩니다.

&를 뒤에 두면 부모 선택자가 뒤에 오는 형태로 컴파일됩니다.
이렇게 하면 특정 컨텍스트에서만 적용되는 스타일을 명확하게 표현할 수 있습니다.

실제 활용 예시

& 기호를 활용한 실제 프로젝트 예시를 살펴봅니다.
버튼, input, 드롭다운처럼 자주 사용하는 컴포넌트를 예제로 보면서, 이 문법이 실제 UI 설계와 컴포넌트 구조화에 어떻게 기여하는지 감을 잡을 수 있습니다.

버튼 컴포넌트

다양한 상태와 변형을 가진 버튼 컴포넌트를 &로 작성하는 예시입니다.

이렇게 작성하면 버튼의 모든 변형과 상태를 한 곳에 모아 관리할 수 있어 유지보수가 편리합니다.

input 컴포넌트

BEM 방법론을 사용한 input 컴포넌트 예시입니다.

Dropdown / Select 컴포넌트

BEM 방법론을 사용한 Dropdown / Select 컴포넌트 예시입니다.

& 사용 시 주의사항

&는 매우 유용한 기능이지만, 사용할 때 몇 가지 주의해야 할 점들이 있습니다.
잘못 사용하면 의도하지 않은 CSS 선택자가 생성되거나, 컴파일 에러가 발생할 수 있습니다.

& 앞뒤 공백 주의

& 앞뒤의 공백에 따라 컴파일 결과가 달라집니다.

&를 사용할 때는 앞뒤 공백을 주의해야 합니다.
일반적으로 & 앞뒤에는 공백을 두지 않습니다.

중첩 깊이 고려

&를 여러 단계 중첩해서 사용하면 선택자가 복잡해질 수 있습니다.

너무 깊게 중첩하면 가독성이 떨어지므로, 2-3단계를 넘지 않는 것을 권장합니다.

&는 부모 선택자만 참조

&직접 부모 선택자만 참조합니다.
할아버지나 조상 선택자는 참조하지 않습니다.

정리

SCSS 부모 선택자 참조 기호(&)에 대해 알아본 내용을 정리합니다.

  • &의 개념: 부모 선택자를 참조하는 특수 기호, 컴파일 시 부모 선택자로 치환됨
  • 주요 사용 패턴: 가상 클래스/요소, BEM 네이밍, 복합 선택자, 문맥 선택자
  • BEM과의 조합: &__element, &--modifier 형태로 BEM을 간결하게 작성 가능
  • 주의사항: & 앞뒤 공백 주의, 중첩 깊이 제한, 직접 부모만 참조

다음 페이지에서는 SCSS의 주석 처리 방식에 대해 자세히 알아봅니다.