구조
와외형
을 분리하고컨테이너
와내용
을 분리하는 방법
=> 부트스트랩 같은 느낌
구조 : width, height, border, padding, margin....
외형 : color, border-color, font-color, background-color...
<!--기존 방식-->
<a class=”instagram_btn instagram_skin”>Instagram</a>
<a class=”facebook_btn facebook_skin”>Facebook</a>
<!--OOCSS-->
<a class=”btn skin instagram”>Instagram</a>
<a class=”btn skin facebook”>Facebook</a>
.btn{
공통 버튼 스타일 정의
}
.skin{
공통 스킨 스타일 정의
}
<div class="header common-width">Header</div>
<div class="footer common-width">Footer</div>
.header {
position: fixed;
top: 0;
}
.footer {
position: relative;
bottom: 0;
}
.common-width {
width: 800px;
margin: 0;
}
아이디를 사용하지 않고 클래스명만 사용하며 전체 구조를
block
(전체를 감싸고 있는 블록 요소),
element
(내부 요소)
modifier
(기능/수정)으로 정의하고
block과 element는더블 언더스코어
로,
modifier는더블 하이픈
으로 연결하여 정의하는 방법론
.header {..}
.block {..}
.header {..}
.header__tap {..}
.header__content {..}
.header__logo__button {..}
.header--hide {..}
.header__tap--big {..}
.header__content--disabled {..}
5개의 구분된 카테고리로 CSS 코딩 기법 제시하는 방법
각 브라우저의 기본 스타일 (default.css, reset.css), 요소 element 스타일의 기본 정의 값
body, form, p, table, button, fieldset, input ... {
margin: 0;
padding: 0;
}
큰 틀의 레이아웃, 요소를 배치, 구별하는데 적용
주요 컴포넘트 : header, footer, aside, container, content 등
하위 컴포넘트 : list, item, form 등
클래스명은 접수사 i-, layout-명시
/* layout => l- */
/* 주요 요소 작성 */
#header {
width: 400px;
}
#aside {
width: 40px;
}
/* 하위 요소 작성 */
.l-width #header {
width: 650px;
padding: 10px;
}
.l-width #aside {
width: 100px
}
페이지에서 재사용 가능한 요소 : 버튼, 배너, 아이콘, 박스 요소 등
각 모듈은 독립성을 가지게 스타일 선언 : 재사용이 가능하게 id, 태그 선택자는 사용하지 않음.
.stick { ... }
.stick-name { ... }
.stick-number { ... }
요소의 상태변화를 표현하는 요소 : 툴팁, 아코디언 등
active나 disable 등이며 suffix "is-"나 "s-"를 붙여서 사용
모듈과 레이아웃 모두 적용 가능
.is-error { ... }
.is-hidden { ... }
.is-disabled { ... }
사용자가 선택 가능하도록 스타일을 재선언하여 사용.
Theme는 전반적인 Look and feel을 정의하며 suffix "theme-"를 붙인다.
/* base.css */
.header {
background-color: red;
}
/* theme.css */
.header {
background-color: orange;
}