CSS에서 class 네이밍을 할 때 작성하는 방식으로 일종의 naming convention 이다.
한마디로 CSS를 사용할 때 클래스 네이밍을 어떻게 지을지, 어떤 방식으로 스타일을 작성할지 등 CSS를 보다 효율적으로 작성하기 위해 정의된 일종의 규칙이다.
CSS 방법론에는 여러가지가 있지만 가장 대표적인 3가지는 다음과 같다.
BEM 규칙은 직관적인 규칙을 통해 쉬운 의미 예측을 가능하게 하는 네이밍 기법이다.
Block(블록), Element(요소), Modifier(상태) 으로 구성되고 각 부분을 __
와 --
로 구분한다. BEM은 기본적으로 ID를 사용하지 않으며, class만을 사용하고 '어떻게 보일지'보다 '어떠한 목적인가'에 초점을 두어 이름을 짓는다. 예를 들어, 에러 메시지를 띄우는 태그에는 .red
가 아닌 .error
라는 이름을 줘야한다.
BEM 규칙을 이해하려면 먼저 Block(블록), Element(요소), Modifier(상태)가 뭔지 알아야 한다.
Block이나 Element의 속성(상태 또는 행동) 담당한다. 생긴 게 조금 다르거나(예: not--bold) 다르게 동작하는 블럭이나 엘리먼트를 만들 때, 추가하는 방식으로 사용한다.
modifier의 경우 표기법이 여러가지라 헷갈렸는데, 가장 최근에 포스팅된 블로그 글을 보니 한개의 밑줄( _ ), 하이픈( - ), 혹은 더블 하이픈( -- )을 사용하기도 한다고 한다.
두개의 밑줄( __ )이 아닌 경우 + 상태를 나타낼 때 modifier로 이해해야 할 것 같다.
ex)
user-component__title_not-bold
user-component__title-not-bold
user-component__title--not-bold
BEM 규칙을 이용해 만든 네이밍은 클래스명이 용도와 형태를 잘 표현해주기 때문에
하지만 클래스명이 길고 복잡해 질 수 있다.
참고자료
https://nykim.work/15
https://velog.io/@zlevn/CSS-%EB%B0%A9%EB%B2%95%EB%A1%A01-BEM-%EB%B0%A9%EC%8B%9D
https://velog.io/@hahan/CSS%EB%B0%A9%EB%B2%95%EB%A1%A0OOCSS-BEM-SMACSS
https://nagneo.tistory.com/20
https://yeongseungjeong.tistory.com/57