BEM 블록·요소·수정자 구조로 CSS 클래스 충돌 없이 컴포넌트 스타일 관리 결
BEM 네이밍 컨벤션은 팀 프로젝트에서 CSS 클래스 이름 충돌 문제를 겪은 이후 도입했습니다. 여러 사람이 동시에 스타일을 추가하다 보니 동일한 클래스 이름이 두 곳에 생기는 상황이 반복됐고, 블록·요소·수정자 구조로 이름 짓기 규칙을 통일했습니다.
예를 들어 카드 컴포넌트라면 .card, .card__title, .card__button--active 형태로 작성합니다. 블록은 독립 컴포넌트, 요소는 내부 구성, 수정자는 상태나 변형을 의미하기 때문에, 클래스 이름만 보고도 구조상 어디에 위치한 요소인지 파악할 수 있었습니다.
도입 후 이점은 클래스 이름만으로 컴포넌트 구조를 예측할 수 있게 된 것입니다. 특히 여러 개발자가 같은 코드베이스를 수정할 때 스타일 의도를 별도 설명 없이 이해할 수 있었고, CSS 특이성 충돌도 크게 줄었습니다.