[css] CSS 방법론

CSS 방법론

한 2년전에 공부했던 내용이지만, 복기하는 차원에서 TIL에 올려본다. 이중 BEM을 제일 유용하게 활용했고 Atomic을 추가로 학습했으며 최근에는 Utility-first CSS에 대해 관심을 갖고 있다.

OOCSS(Object Oriented CSS)

OOCSS의 목적은 코드 재사용성을 높이고, 궁극적으로는 더 빠르고 효율적이며 유지보수하기 용이한 스타일시트를 만드는 것이다. 결합도 낮추기(decoupling), 단일 책임의 원칙(single responsibility principle), 캡슐화(encapsulation) 를 강조하는 방법론이다.

OOCSS는 스타일의 특징(feature)에 따라 범주를 분리하여 구조적으로 선택자들을 적용할 수 있게한다.

SMACSS (Scalable and Modular Architecture for CSS) - Jonathan Snook

SMACSS는 엄격한 프레임워크 보다는 스타일 가이드에 초점을 맞추며, 디자인 프로세스 진단과 기존의 경직된 프레임워크를좀 더 유연하게 만드는 것을 목표로 하고 있다.

SMACSS의 핵심은 범주화(categorization)를 통한 패턴화이다.

CSS를 베이스base, 레이아웃layout, 모듈module, 상태state, 테마theme의 5개 범주로 분류할 수 있다. 각 범주는 엄격한 분리는 아니고 느슨한 분리이므로 공통 범위가 있을 수 있다

Base rules

Layout rules

Module rules

State rules

Theme rules

BEM(Block-Element-Modifier)

BEM은 웹페이지를 컴포넌트들의 조합으로 바라보고 접근한 방법론이다. CSS의 일관성과 재사용성을 고려했다.

Block

재사용이 가능하며 기능적으로 독립적인 페이지 컴포넌트

Element

블록 안에서 특정 기능을 수행하는 컴포넌트. 외부에서 혹은 독립적으로 사용할 수 없다

Modifier

Block, Element의 모양(외관)과 동작(상태)을 정의한다

BEM은 다시 한번 전체 복습하는 시간을 가져야지.