CSS는 "누구에게(선택자)", "무엇을(속성)", "어떻게(값)" 적용할지를 정의하는 직관적인 구조를 가집니다.
HTML 요소를 정확하게 타겟팅하기 위한 주요 선택자와 네이티브 Nesting 기법입니다.
| 유형 | 사용 예시 | 설명 |
|---|---|---|
| 기본 선택자 | div, .card, #header |
각각 HTML 태그, 클래스 이름(.), 아이디(#)를 통해 요소를 직접 선택합니다. |
| 복합 (결합) 선택자 | ul > li, h1 + p |
자식(>), 자손(공백), 인접 형제(+), 일반 형제(~) 관계를 결합해 타겟팅합니다. |
| 상태 가상 클래스 | :hover, :focus |
마우스를 올리거나 포커스가 갔을 때 등 특정 '상태'가 된 요소에만 스타일을 적용합니다. |
| Native Nesting (최신) | .btn { &:hover { ... } } |
최신 브라우저에서 공식 지원하며, 부모 요소의 스코프 안에서 자식/상태 스타일을 중첩(Nesting)하여 코드를 간결하게 작성합니다. (& 기호는 부모 자신을 의미) |
"왜 내가 적용한 스타일이 먹히지 않을까?" 동일한 요소에 스타일이 충돌할 경우, 브라우저가 승자를 결정하는 명시도 점수표입니다.
ID 선택자(#)는 점수가 압도적으로 높아 나중에 스타일을 덮어쓰기(오버라이드) 매우 어렵습니다. 복잡한 CSS를 유지보수하기 쉽게 만들려면, 재사용이 가능하고 점수가 적당한 클래스(.class) 위주로 스타일을 작성하는 것이 현대적인 CSS 방법론의 핵심입니다. (!important는 절대 피해야 할 최후의 수단입니다.)