October 11, 2018
웹은 정말 빠른 속도로 발전하고 있습니다.
CSS는 훌륭한 ‘언어’라고는 할수 없지만 빠르게 진화했습니다.
대규모 어플리케이션이 많아지고 그에따라 CSS 활용 범위도 넓어져가는데,
(잘못 작성된 CSS는 디버깅하는데 헬파티를 열어준다.)
설계에 의미를 두지 않았던 CSS에도 다양한 방법론 생겨났습니다.
CSS방법론(BEM, SMACSS, OOCSS 등 더 많을수도..?) 존재하지만 이번 포스팅에서는 BEM에 관해서 적어볼까 합니다.
CSS 방법론은 아래와 같은 목표를 갖고 있습니다.
곰돌이푸 베어브릭 가지고 쉽게 설명해보겠습니다.
아래와 같이 component 스타일이 명명될 수 있습니다.
.pooh {
}
//or
.pooh-brick {
}
element 는 이름 뒤에 2개의 밑줄(two underscores)을 추가하여 클래스를 지정할 수 있습니다.
.pooh__head {
}
.pooh__body {
}
.pooh__arms {
}
.pooh__feet {
}
//or
.pooh-brick__head {
}
.pooh-brick__body {
}
.pooh-brick__arms {
}
.pooh-brick__feet {
}
block 또는 element에 하이픈(hyphens) 두 개를 추가하여 지정한다.
.pooh--yellow {
background: #yellow;
}
.pooh--red {
background: #red;
}
.pooh--blue {
background: #blue;
}
//or
.pooh-brick--yellow {
background: #yellow;
}
.pooh-brick--red {
background: #red;
}
.pooh-brick--blue {
background: #blue;
}
만약 머리색만 바뀐 곰돌이푸라면 ??
.pooh__head--red {
background: #red;
}
//or
.pooh-brick__head--red {
background: #red;
}
위가 베이직한 BEM 명명 규칙이 작동하는 방식입니다.
단순한 프로젝트의경우는 하이픈으로만 클래스를 지정하게되는데 대규모 어플리케이션은
유지보수 및 확장성을 위해 BEM 규칙을 사용하길 권장한다.
물론 깊이가 깊어지면 또다른 혼란을 가져올 수 있다…