BEM 방법론 (BEM Methodology) 이란?
대규모 프로젝트에서 CSS 코드를 관리하는 방식 중 하나이다. BEM 은 Block
, Element
, Modifier
의 약자이다.
Block
- 하나의 엔티티로 그 자체로 의미가 있다.
- ex)
header
,container
,menu
,checkbox
,input
Element
- 그 자체로는 의미가 없으나, block 에 묶여 의미를 가지게 되는 요소이다.
- ex)
menu item
,list item
,checkbox caption
,header title
Modifier
Block
이나Element
에 들어가는 flag 이다.- 외관이나 행위를 변경하기 위해 사용한다.
- ex)
disabled
,highlighted
,checked
,fixed
,size big
,color yellow
예제 화면
실제 예제 코드
위 버튼을 아래의 코드로 표현할 수 있다.
<button class="button">Normal button</button>
<button class="button button--state-success">Success button</button>
<button class="button button--state-danger">Danger button</button>
SASS 의 부모 참조자를 이용하는 형태로도 가능한데, 그러면 아래와 같이도 작성 가능하다.
<button class="block__button">Normal button</button>
<button class="block__button__state-success">Success button</button>
<button class="block__button__state-danger">Danger button</button>
장점
- 모듈화:
Block
은 다른 엘리먼트에 의존하지 않기 때문에 독립적이어서 다른 사람이나 옛날에 만든 CSS 에서 의도치 않은 연쇄작용을 방지할 수 있다. - 재사용성: 독립적인
Block
을 합쳐 똑똑하게 재사용할 수 있다. 유지해야 할 CSS 코드의 총량을 줄일 수 있다.Block
의 라이브러리를 세팅하여 CSS 를 효율적으로 사용할 수 있다. - 구조: 모든 팀원들이 BEM 을 잘 따라준다면, CSS 구조를 쉽게 이해할 수 있다.
레퍼런스
https://getbem.com/introduction/
https://nykim.work/15
반응형
'프론트엔드 > CSS' 카테고리의 다른 글
CSS transition 속성이란? (feat. 애니메이션 부여) (0) | 2023.08.09 |
---|---|
CSS 접두사 (CSS Prefix, webkit, moz, ms, o) 가 의미하는 것은? (0) | 2023.07.05 |
flex 엘리먼트 꽉 채웠을 때 자동 줄넘김되게 하기 (0) | 2022.12.05 |
img 태그 사용시 아래의 4px 의 미묘한 빈공간이 생기는 이유 (0) | 2022.12.05 |
CSS display 속성의 특징 (0) | 2022.12.05 |