---
# System prepended metadata

title: 'THE Red: 견고한 UI 설계 - CSS'
tags: [석기]

---

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. 하나의 이름에 요소, 변형은 한번만 허용.

