THE Red: 견고한 UI 설계 - CSS
===
###### tags: `석기`
---
## CSS가 어려운 이유
### 결합 기호
**css 명세 읽는 법**
:::success
공백 -> && -> || -> |
:::
순서로 그룹핑하여 생각한다.
```css=
a b | c || d && e f
[a b] | c || d && [e f]
[a b] | c || [d && [e f]]
[a b] | [ c || [d && [e f]]
```
---
## CSS의 절대 권력, 초기화
### CSS reset 꼭 필요한가?
- 덮어쓰는 CSS를 습관적으로 쓰이는 경우가 많다.
- Universal selector * reset
- 쓰지말아라!
```css=
*,
::before,
::after {
...
}
```
- 덮어쓰기 너무 자주 사용된다.
**결론**
- CSS reset을 다시 만들어보자.
```css=
body {
margin: 0;
overflow-wrap: break-word;
}
:lang(ko) { word-break: keep-all; }
img {
max-width: 100%;
height: auto;
}
```
---
## 웹은 덩어리, 구성 요소, 변형의 반복으로 구성.
### BEM
:::info
Block
- 재사용 가능한 독립적인 블록
Element
- 블록을 구성하는 종속적인 하위 요소
Modifier
- 블록 또는 요소의 변형 (모양, 상태, 동작)
:::
==특징==
1. 의미론적 클래스 선택자 작명 규칙.
2. 다른 형식의 선택자 사용 제한
3. 전역에서 유일한 이름 권장
4. 낮은 선택자 특이성 유지
5. 병렬개발 가능 (HTML - CSS 연결 느슨.)
==명명 규칙==
1. 두개 언더바는 하위요소
2. 두개 하이픈은 상태 변형
3. 하나의 이름에 요소, 변형은 한번만 허용.