CSS 디버깅 — 적용 안 되는 5가지 원인

"분명히 썼는데 왜 안 되지?"의 원인은 사실 몇 개 안 됩니다

10초 핵심 요약

01

5가지 원인, 순서대로 의심하기

원인확인 방법
선택자 오타클래스 앞 점(.) 빠짐, 철자 오류
우선순위 패배Styles 패널에 취소선(color)
캐시Ctrl+Shift+R로 강제 새로고침해도 그대로인지
저장 누락파일을 실제로 저장했는지, 빌드 결과에 반영됐는지
상속 방해부모 요소의 다른 속성이 자식에 영향을 주는지
02

우선순위 점수 계산법

ID는 100점, 클래스는 10점, 태그는 1점입니다. 선택자를 조합해서 쓰면 점수가 합산됩니다. 점수가 높은 쪽이 이깁니다. #sidebar .title은 100+10=110점, .post-card .title은 10+10=20점 — 앞쪽이 이깁니다.

흔한 충돌 원인 — 외부 CSS 리셋이나 다른 곳에서 가져온 컴포넌트가 ID 선택자를 쓰고 있으면, 내가 만든 class 선택자가 우선순위에서 집니다. 해결책은 !important가 아니라, 선택자를 더 구체적으로(상위 요소를 앞에 추가) 만드는 것입니다.
03

!important를 피해야 하는 이유

!important는 우선순위 계산을 무시하고 무조건 이기는 치트키입니다. 편해 보이지만, 나중에 그보다 더 센 규칙이 필요하면 또 !important를 써야 하고, 결국 CSS 전체가 !important 범벅이 되어 어느 것도 수정할 수 없는 상태가 됩니다.

안 될 때 확인하세요 위 표 순서(오타 → 우선순위 → 캐시 → 저장 → 상속)대로 하나씩 지워나가세요. 대부분은 앞의 2가지(오타, 우선순위)에서 해결됩니다.
04

Day 23 완료 체크리스트

우선순위 점수 계산법(ID/클래스/태그)을 설명할 수 있다.
일부러 우선순위 충돌을 만들고 선택자 구체성으로 해결해봤다.
스스로 설명해보기 — !important를 쓰는 대신 우선순위(specificity)를 높이는 게 왜 더 나은 해결책인지 설명할 수 있나요?

오늘의 용어

우선순위(specificity)
ID(100)+클래스(10)+태그(1) 점수 합산으로 승자를 정하는 CSS 규칙
!important
우선순위 계산을 무시하고 무조건 이기는 예외 규칙 (남용 금지)
캐시
브라우저가 저장해둔 옛날 버전의 파일