BEM은 "Block Element Modifier"의 약자로, 웹 개발에서 CSS를 구조화하고 유지보수를 쉽게하기 위한 방법론이다. 이 방법론은 클래스 이름을 정하는 규칙을 제시하여 코드의 가독성을 높이고 재사용성을 강화합니다. BEM은 다음과 같이 세 가지 주요 구성 요소로 이루어져 있다.
1. Block (블록):
- 블록은 독립적으로 의미 있는 부분을 나타낸다. 예를 들어, 헤더, 메뉴, 버튼은 모두 블록이 될 수 있다.
- 클래스 이름은 보통 이 블록의 역할을 나타내는 단어로 지정된다.
<div class="header">...</div>
<div class="menu">...</div>
<button class="button">...</button>
2. Element (엘리먼트):
- 엘리먼트는 블록 안에서 특정 기능을 수행하는 부분을 나타낸다. 블록에 종속적이며 블록 내에서만 의미가 있는 것들이 엘리먼트가 된다.
- 엘리먼트의 클래스 이름은 블록 이름 뒤에 두 개의 밑줄(__)을 붙인 후 엘리먼트의 역할을 나타내는 단어를 추가한다.
<div class="header">
<div class="header__logo">...</div>
<div class="header__nav">...</div>
</div>
3. Modifier (모디파이어):
- 모디파이어는 블록이나 엘리먼트의 속성을 변경하는 데 사용된다. 모디파이어의 클래스 이름은 블록 또는 엘리먼트 이름 뒤에 두 개의 대시(--)를 붙인 후 모디파이어의 역할을 나타내는 단어를 추가한다.
- 모디파이어는 선택적으로 사용되며, 블록 또는 엘리먼트의 스타일을 수정하거나 상태를 나타내는 데 유용하다.
<button class="button button--primary">Primary Button</button>
<button class="button button--disabled">Disabled Button</button>
이러한 구성으로 인해 클래스 이름은 의미를 가지며, 요소 간의 관계를 명확히 파악할 수 있다. 이는 코드를 이해하고 유지보수하기 쉽게 만들어준다. BEM은 가독성과 확장성을 강화하여 대규모 프로젝트에서 특히 효과적이다.
'HTML CSS' 카테고리의 다른 글
Font를 Preload하는 방법 (19) | 2023.11.12 |
---|---|
Safari 브라우저에서 크로스브라우징 하기 (18) | 2023.11.12 |
HTML5 시멘틱 태그와 웹 표준을 지키는 이유 (19) | 2023.11.12 |
WAI-ARIA란? (18) | 2023.11.11 |
HTML 엔티티(Entity)란? (17) | 2023.11.09 |