CSS Naming - SMACSS, BEM, OOCSS

  • SUNGMIN SHIN
  • 11 Minutes
  • 2018년 10월 16일

CSS Naming - SMACSS, BEM, OOCSS


SMACSS (Scalable and Modular Architecture for CSS)

SMACSS는 스타일을 다섯가지로 분류하고 각 유형에 맞는 선택자(selector)와 작명법(naming convention), 코딩 기법을 제시 함

  1. 기본 (BASE)
  2. 레이아웃 (Layout)
  3. 모듈 (Module)
  4. 상태 (States)
  5. 테마 (Theme)

폴더 구조 예시

1
2
3
4
5
6
7
8
9
SCSS
ㄴ 서비스명.scss (import 구문으로 이루어진 메인 파일)
ㄴ common
ㄴ _reset.scss
ㄴ _variables.scss
ㄴ import
ㄴ _페이지명.scss
ㄴ lib
ㄴ _외부라이브러리.scss

0. 공통 유의사항

1. 기본(Base)


2. 레이아웃 (Layout)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#content {
width: 80%;
float: left;
}

#aside {
width: 20%
}

.l-fixed #content {
width: 600px;
margin-right: 10px;
}

.l-fixed #aside {
width: 200px
}


3. 모듈 (Module)

1
2
3
<div class="forder">
<span>Forder Name</span>
</div>
1
2
3
4
.folder > span {
padding-left: 20px;
background: url(icon.png);
}


4. 상태 (State)

1
2
3
4
<div class="btn_area">
<a href="#" class="btn btn_good is-active">좋아요버튼</a>
<a href="#" class="btn btn_bad">나빠요버튼</a>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
.btn {
display: inline-block;
background:#ddd;
border-radius:4px;
}

.btn.is-active{
background:#43f837;
}

.btn.is-hidden {
display: none;
}


5. 테마 (theme)

1
2
3
4
5
6
7
.mod {
border: 1px solid;
}

.mod.theme-default {
border-color: blue;
}


BEM (Block, Element, Module)


Block

참고
WIT: CSS방법론 - SMACSS, BEM, OOCSS
레진 기술 블로그 - 레진 챌린지 CSS 개발 후기