FrontEnd/Interviews

BEM (Block Element Modifier)

SambaLim 2019. 11. 19. 22:53
CSS_BEM

What is CSS BEM?

CSS BEM은 무엇입니까?

 

나의 답변

BEM(Block Element Modifier)은 CSS 아키텍쳐로 클래스명을 .block__element--modifier와 같은 형식으로 나타냅니다.

 

추가 학습내용

  • CSS-in-JS의 scope문제를 해결하기 위한 대체 해결책
  • 다양한 CSS 구조를 개선시키기 위한 CSS 개발 방법론

 

예시

Block

  • 문단 전체에 적용된 요소 혹은 요소를 담고 있는 컨테이너를 말합니다.
  • Block의 이름은 그 블록의 목적으로 기술되어야 하며, 그 Block의 상태를 나타내지 않습니다.
  • Block은 자신의 환경에 영향을 끼쳐서는 안됩니다. (Block의 positioning이나 margin 값과 같은 외부 기하학적 요소를 설정해서는 안됩니다.) → Block의 재사용성이나 Block이 움직일 경우의 독립성을 보장

Element

  • 블럭이 포함하고 있는 부분입니다. (Memenbership: 블럭에서 분리되어서는 안됨)
  • Element의 이름은 그 Element목적으로 기술되어야하며, 그 Element의 상태를 나타내지 않습니다.
  • Block내의 Element는 선택사항입니다. Optionality
  • __ 더블 언더스코어를 사용하여 블록 이름으로부터 분리시킵니다.
  • 블록 구조가 변화하더라도 Element들의 규칙과 이름은 유지되어야 합니다.

Modifier

  • Block혹은 Element의 속성입니다. Modifier은 Block혹은 Element의 외관이나 상태를 정의하는 Entity 입니다.
  • Modifier의 이름은 자신의 외관 혹은 상태, 행동을 기술해야 합니다.
  • --더블 하이픈를 사용하여 Block이나 Element이름으로 부터 분리합니다.
  • -을 사용하여 Modifier의 특성을 나타내기도 합니다.
  • is-*을 옵션으로 사용하기도 합니다.

 

참고

https://velog.io/@yesdoing/BEM-Block-Element-Modifier-Quick-start

https://webclub.tistory.com/263

 

'FrontEnd > Interviews' 카테고리의 다른 글

React Element와 Component 차이  (0) 2019.11.24
Javascript ==와 ===의 차이  (0) 2019.11.21
CSS preprocessor 장점 단점  (0) 2019.11.20
Cache busting  (0) 2019.11.20
alt 속성  (0) 2019.11.19