마크업작성 규칙중에 bem방법론이 있어서 정리해보았다.
Block Element Modifier (블록 요소 기능)
즉 태그 클래스명을 작성할때 블록-요소-기능 순으로 작성하는것이다.
- HTML 마크업 모듈화 가능.
- 클래스만사용
- 이름을 연결할땐 block-name 처럼 하이픈하나로 연결
- 키-벨류 타입도 있음 이건 성질-내용을 작성
장점
- 클래스명 중복방지
- 직관적임
- DOM구조 파악이 쉽다.
네이밍 방법은
- 블록네임__요소네임–기능 ex) gnb__list–active
- 이름지을땐 하이픈으로 표시 ex) best-rooms__img-wrap (best-rooms가 블록이름, img-wrap이 요소이름)
예를들어 헤더를 작성한다고 하면 아래와 같이 작성할 수 있다.
<header class="header">
<div class="header__logo">
<h1 class="logo">
<a href="#none" class="logo__link">
<img src="images/logo.png" class="logo__img" alt=로고>
</a>
</h1>
</div>
</header>콘텐츠라면(리스트라고치고)
<section class="contents__box">
<h2 class="title-type1">인기숙소</h2> <!-- 타이틀은 타이틀모듈 -->
<ul class="best-rooms">
<li class="best-rooms__list">
<a href="#none" class="best-rooms__link">
<div class="best-rooms__img-wrap">
<img src="images/place-01.jpg" class="best-rooms__img" alt="H Avenue 역삼점 호텔">
</div>
<div class="best-rooms__info">
<strong class="best-rooms__name">H Avenue 역삼점</strong>
<div class="best-rooms__price">
<span class="best-rooms__halfday">대실 20,000원</span>
<span class="best-rooms__oneday">숙박 60,000원</span>
</div>
<p class="best-rooms__text">
조식 무료 이벤트 안내
비지니스 고객님! 두분이서 오세요!
아메리카노 무료제공
</p>
</div>
</a>
</li>
</ul>
</section>일단 클래스명을 작성할때 고민을 많이 하게 되는데 bem대로 네이밍을 한다면 좀더 수월할것같다. 다만 직관적이기때문에 다소 클래스명이 길어질 수 있을듯…!!