과거와 달리 현재는 CSS로 이미지, JavaScript, 동적요소제어(animaiton, transition) 등 을 커버할 수 있게 되었다.
UI 개발자로서 웹사이트 개발에 많은 부분을 기여할 수 있다는 장점이 있지만, 비대해지는 CSS 파일을 효율적으로 관리하거나 유지보수를 용이하게 하기위한 '효율적인 CSS 방법론'에 대한 관심이 높아졌다.
CSS 방법론인 SMACSS, OOCSS, BEM에 대해서 소개한다.
객체지향 CSS 방법론으로 2 가지 기본규칙을 갖고 있다.
Styling
(background, color, border...)Positioning
(position, float, margin...)❗ 유의사항
- 파생된 CSS Selector 사용 금지 ( .box a )
- ID Selector 사용 금지
- Element Selector 사용 금지 ( div.box )
- !important 사용 금지
- 유동적으로 객체를 생성
- 둥근 코너 박스 사용 주의 (배경이 가변적이거나 gradient 요소가 있을 경우)
범주화이며(categorization)
스타일을 다섯 가지 유형으로 분류하고, 각 유형에 맞는 선택자(selector)와 작명법(naming convention)을 제시한다.유사 유형의 재사용
으로 코드량 감소, 유지보수 비용 절감, UX의 일관성 유지 기대CSS의 기본 요소
element 스타일의 default 값을 지정해주는 것이다.
선택자로는 요소 선택자를 사용한다. (Reset CSS)
- ID or Class 없음
- !important 사용 금지
- 단일 Element Selector 사용 가능
페이지 분할 요소
구성하고자 하는 페이지를 컴포넌트를 나누고 어떻게 위치해야하는지를 결정한다.
Layout 내 하나 이상의 모듈을 함께 구성하여 사용
유일하게 ID를 사용 (재활용이 불가능한 Layout에만 사용)
사이트 내 Layout 변경이 필요한 경우 class를 추가하여 제어한다
스타일 재사용을 위한 요소
독립현 Component로 설계 필요
레이아웃 요소 안에 들어가는 더 작은 부분들에 대한 스타일을 정의한다.
- ID Selector 사용 금지
- Element Selector 사용 금지
- 위치 기반의 Styling 금지
상태와 관련된 요소 (활성 or 비활성, 숨김 or 확장)
다른 스타일에 덧붙이거나 덮어씌워서 상태를 나타낸다.
!importnat 사용 가능
Layout or Module 사용 가능한가?
자바스크립트에 의존적인 스타일인가?
재사용성
을 높이기 위함이다.
블록이나 요소의 모양, 상태를 정의한다. block_element-modifier, block—modifier 형태로 사용한다. 수식어에는 불리언 타입과 키-값 타입이 있다.
🖱 출처