CSS 선택자의 우선순위

담당
황찬우
완료
완료
유형
HTML CSS
비고

요약


점수 매기는 방법:
  • !important: 속성 기준으로 가장 우선시됩니다.
  • 인라인 선언 방식: 요소 기준으로 가장 우선됩니다.
  • id 선택자: 100점
  • class 선택자, 속성 기반 선택자, 가상 클래스, 가상 요소: 10점
  • 태그 선택자: 1점
  • 전체 선택자, 부정 선택자: 0점
 
 

CSS 선택자의 우선순위


선택자 우선순위란 같은 요소가 여러 선언의 대상이 된 경우, 어떤 선언의 CSS 속성을 우선적으로 적용할 것인지를 결정하는 방법입니다.
 

적용 순서에 따른 우선순위 규칙

  1. 선택자 점수를 합산해 점수가 높은 선언을 우선하지만, 점수가 같으면 가장 마지막에 해석(작성)된 선언이 우선함
  1. 결합 관계(복합 선택자 패턴)의 경우는 결합되는 선택자 방식의 정해진 점수를 합산하여 우선 순위를 정한다.
  1. !important를 사용해서 가장 우선적으로 적용이 가능하다.
  1. 같거나 서로 다른 선택자 방식으로 동일 요소에게 동일 속성을 뒤쪽에서 다른 값으로 재정의할 수 있다.
  1. 서로 나누어진 CSS 코드인 경우 HTML 문서에 적용되는 순서에 따라 뒤쪽에서 동일 요소에게 동일 속성을 재정의 할 수 있다.
  1. 선택자의 종류에 따른 우선 순위 규칙(1항보다 우선)
      • 주요 단일 선택자 방식에서 id, class, tag 순의 우선 순위
      • 우선 순위 규칙에 의해 경우에 따라 뒤쪽에서 동일 속성을 재정의 할 수 없다.
 
 

점수 매기는 방법

  • !important : 속성 기준 가장 우선
    • color: red !important;
  • 인라인 선언 방식 : 요소 기준 가장 우선
    • <div> <p style="color: red;">Contents</p> </div>
  • id 선택자 : 100점
    • #name {}
  • class 선택자, 속성 기반 선택자, 가상 클래스, 가상 요소 : 10점
    • /* class 선택자 */ .name {} /* 속성 기반 선택자 */ a[href*=”#”] {} /* 가상 클래스 */ a:hover {} /* 가상 요소 */ span::after {}
  • 태그 선택자 : 1점
    • p {}
  • 전체 선택자, 부정선택자 : 0점
    • /* class 선택자 */ * {} /* class 선택자 */ :not(p) {}
 
 

점수 계산 예시

/* class + tag + class = 10+1+10 = 21 */ .list li.item {} /* not + class = 0+10 = 10 */ :not(.box){}
 
 

참고한 사이트