선택자 매칭
.card p:hover는 hover 상태의 p가 .card 안에 있는지
확인합니다.
CSS 적용 결과는 “ID가 강하다” 같은 감각만으로 결정되지 않습니다. 선언의 출처와 중요도, 특이도, 선언 순서, 상속 여부가 차례로 비교되어 한 속성의 최종 값이 정해집니다.
앞 단계에서 탈락한 선언은 뒤 단계로 넘어오지 않는다.
.card p:hover는 hover 상태의 p가 .card 안에 있는지
확인합니다.
!important, 브라우저 기본값, 사용자 스타일, 작성자
스타일의 우선순위를 비교합니다.
ID, class/attribute/pseudo-class, type/pseudo-element 개수를 차례로 비교합니다.
같은 출처와 같은 특이도라면 CSS 파일에서 더 뒤의 선언이 이깁니다.
color, font-family처럼 상속되는 속성만
부모 값을 물려받습니다.
#main은 ID, .menu-item과
:hover는 class 계열, a와
::after는 type 계열로 계산됩니다. 결합자 공백은 점수를
더하지 않고 관계만 제한합니다.
p
문서의 모든 p 요소
0-0-1, 기본 문단 스타일에 적합
.note
class가 note인 모든 요소
0-1-0, 재사용 가능한 컴포넌트 스타일
#hero
문서 안의 고유 id 요소
1-0-0, 과하게 쓰면 덮어쓰기 어려움
style=""은 일반 선택자보다 강하므로 반복 스타일에는
쓰지 않습니다.
:where() 안의 특이도는 0이므로 기본 테마 규칙에
유용합니다.
:is()는 인자 중 가장 높은 특이도를 선택자 점수에
반영합니다.
일반 레이아웃 덮어쓰기보다 유틸리티 예외나 사용자 접근성 보정에 가깝게 둡니다.