클래스 충돌 문제 해결 + Block/Element/Modifier 실제 예시 + CSS Modules 비교
팀 프로젝트에서 여러 사람이 CSS를 나눠 쓰다 보니 클래스명이 충돌하는 문제가 생겼고, BEM 명명 규칙을 처음 도입했습니다. Block은 독립적인 UI 컴포넌트, Element는 블록을 구성하는 부분, Modifier는 상태나 변형을 나타내는 방식이라, `.card__title--highlighted` 처럼 이름만 봐도 구조를 알 수 있게 됐습니다. 처음엔 이름이 길어진다는 부담이 있었는데, 클래스명이 길어도 의미가 명확하면 CSS를 읽는 시간이 줄어든다는 걸 실제로 경험했습니다. BEM을 쓰면 특정 컴포넌트에 관련된 스타일이 한 곳에 모이는 효과가 생겨서 수정 범위를 예측하기 쉬워졌습니다. 단점은 컴포넌트 구조가 바뀌면 클래스명도 전부 바꿔야 하는 경우가 있어서, CSS Modules처럼 스코프가 보장되는 방법과 비교해보기도 했습니다.
BEM은 팀에서 CSS 충돌을 줄이는 가장 진입 장벽이 낮은 컨벤션이라고 봅니다.