-
TIL. CSS 설계 기법Front-end Dev./HTML_CSS 2021. 11. 13. 01:51
기대하고 기대하던 CSS 설계 기법을 학습했다.
저 이제 class명 고민 그만할래요..✋
마크업에서 기준없이 class명을 정하다보니 오래 걸리는 것과 기억하기 힘든 것이 문제였다.
CSS 설계 기법으로 BEM을 알게 되어서 이제 좀 더 클린한 마크업이 되길 기대하고 있다.
✅
우선 방법론에는 크게 3가지가 있다.
1. OOCSS 2.SMACSS 3.BEM
그 중에 3번째 방법론인 BEM에 대해 먼저 정리를 한 후
나머지 2가지 방법론을 다뤄보겠다.
BEM (Block Element Modifier)
- 러시아에 있는 얀덱스(Yandex)사가 만든 설계방법이다.
- HTML, CSS의 클래스의 설계 규칙이다.
- OOCSS와 같은 모듈기반의 방법을 뿌리로 한다.
✅ 기본규칙
▶ 원활한 가중치 계산을 위해 Class 선택자만 사용한다. ( z-index 10단위로 사용)
▶ 대문자대신 소문자, 숫자를 이용한다.
▶ ex) class="opacity_half__txt"
✅ 목표
▶ 인터페이스 요소의 컴포넌트를 여러 개의 블록 레벨로 나누어 쉽게 관리하는 것이다.
(* 컴포넌트 : 재사용 가능한 코드)
✅ 방법
1. Block (블록)
#재사용 #간단 #직관적
- 어디에서나 재사용 가능하고 독립적으로 분리가 가능하다.
- 클래스 네이밍은 형태보다 의미에 집중한다.
- ex) Error, hidden
- 하이픈 케이스 (케밥케이스)를 사용한다.
- ex) cont-nav
- 환경에 영향 받지 않아야 한다.
2. Element (요소)
#의존적 #중첩권장X #선택적
- 블록을 구성하는 요소들로 블록에 종속되어야 한다.
- 블록의 클래스 이름을 상속 받는다.
- 요소의 클래스 이름은 언더바 두 개로 사용한다.
- ex) error__link, opacity-half__btn
- 요소를 중첩해서 사용하지 않는다.
- ex) opacity-half__btn__txt (x)
- opacity-half__txt (o)
3. Modifier (수식어)
#요소차이수정 #수식
- 블록과 요소의 모습,상태, 움직임을 정의한다.
- 단독으로 사용하지 않고 두 번째 클래스 이름으로 사용한다.
- ex) btn-move btn_move_active
- 블록이나 요소의 이름을 상속 받고 언더바 하나로 연결한다.
- 언더바와 하이픈이 혼용된 형태이다.
- ex) btn-move btn-move_size-small (o)
✅ Why BEM?
1) HTML, CSS 환경을 기반으로 하여 유지 관리 가능
2) 쉽게 이해할 수 있는 코드 (간단, 단순)
OOCSS (Object Oriented CSS)
- 객체지향 CSS
- 모듈을 만들어 조합하도록 하는 방법론
✅ 방법
1. 구조와 스킨의 분리
- 구조 : 레이아웃에 영향을 주는 속성들이 포함된다. (width, padding..)
- 스킨 : 레이아웃에 영향을 주지않고, 시각적인 영향을 주는 속성이 포함된다. (font, border, color..)
2. 컨테이너와 콘텐츠의 분리
#의존적 #중첩권장X #선택적
- 블록을 구성하는 요소들로 블록에 종속되어야 한다.
- 블록의 클래스 이름을 상속 받는다.
SMACSS
- CSS 규칙을 5가지로 나눈 스타일 사이드
- 확장 가능한 모듈식 아키텍쳐
✅ 기본규칙
▶ 모듈 방식으로 나온다 ( z-index 10단위로 사용)
▶ 대문자대신 소문자, 숫자를 이용한다.
▶ ex) class="opacity_half__txt"
✅ 목표
▶ 인터페이스 요소의 컴포넌트를 여러 개의 블록 레벨로 나누어 쉽게 관리하는 것이다.
(* 컴포넌트 : 재사용 가능한 코드)
✅ 방법
1. Block (블록)
#재사용 #간단 #직관적
- 어디에서나 재사용 가능하고 독립적으로 분리가 가능하다.
- 클래스 네이밍은 형태보다 의미에 집중한다.
- ex) Error, hidden
- 하이픈 케이스 (케밥케이스)를 사용한다.
- ex) cont-nav
- 환경에 영향 받지 않아야 한다.
2. Element (요소)
#의존적 #중첩권장X #선택적
- 블록을 구성하는 요소들로 블록에 종속되어야 한다.
- 블록의 클래스 이름을 상속 받는다.
| 참고 사이트
http://getbem.com/
http://getbem.com/introduction/
👉 피드백
- 멋사 프론트엔드 스쿨 1기 2주차에 들어섰다!
2주차는 나에 대한 반성을 많이 하게 된 주였다.
구현하는 것만 집중해서 코드를 제대로 이해하지 않고
의미없이 사용하는 코드들이 늘어나고 엉망이 되었다..
멘토님께 코드리뷰 받을 때
내가 쓰는 코드를 이해하면서 작성해야한다고 하셨다.
(+ 불필요한 CSS 꼭 제거하기)
처음엔 많이 써보고 에러도 많이 내는게 중요하다고 하셨는데,
코드가 왜 들어갔는지 모르고 쓰는 일이 없도록 하자!!
👉 액션플랜
- HTML 마크업부터 다시 기초다지기!
- CSS 설계 기법 중 BEM 방법론으로 class명 짓는 연습하기.
(논리적으로 쓰임에 대해 이해하면서)
'Front-end Dev. > HTML_CSS' 카테고리의 다른 글
Select 태그 내 아이콘 선택이 안될 때 (0) 2022.04.04 2일차 - 퍼블리싱 스터디 기록 (0) 2022.01.02 TIL 05. CSS 단위 (em, rem, px) 정리 (0) 2021.11.15 TIL 04. 레이아웃 구현 프로젝트 (0) 2021.11.14