HTML, CSS

[CSS] 선택자 우선 순위

두두나 Dev 2023. 5. 16. 18:40

 

CSS 선택자 (CSS Selector)

선택자 점수 (Selector score)

1. 전체선택자 (범용선택자) : 0점

2. type 선택자 : 1점

3. class 선택자 : 10점

4. id 선택자 : 100점

 

/* 0점 */
*{
    background-color: silver;
}
/* type 선택자 1점 */
P{
    background-color: goldenrod;
}
/* class 선택자 10점 */
.test{
    background-color: blue;
}
/* id 선택자 100점 */
#test2{
    background-color: seagreen;
}

전체 선택자 (Universal Selector) : 0점

  • 모든 HTML 요소에 접근이 가능한 선택자
  • * 로 표현함
*{
    background-color: silver;
}

 

타입 선택자(Type Selector) : 1점

  • 태그 이름을 사용해서 나타냄
  • 해당 태그에 해당하는 모든 속성에 적용된다
  • 주로 reset 작업 할때 사용
P{
    background-color: goldenrod;
}

 

클래스 선택자 (Class selector) : 10점

  • 다수의 클래스에 적용하는게 가능한다.
  • CSS를 컨트롤하는데 많이 사용된다
  • . 으로 표현한다
.test{
    background-color: blue;
}

 

id 선택자 (id seclecor) : 100점

  • 고유 아이디만을 가지고 있는 요소를 식별할때 사용한다
  • 자바스크립트 컨트롤에서 많이 사용한다.
  • 같은 페이지에서 같은 id는 중복 금지
#test2{
    background-color: seagreen;
}

선택자 3가지 우선순위 원칙

  • 후자 우선의 원칙
  • 구체성의 원칙
  • 중요성의 원칙

 

후자 우선의 원칙

동일한 선택자가 연속으로 사용된 경우 후자가 우선순위를 가짐

P{
    background-color: goldenrod;
}
P{
    background-color: red;
} /* red 색상이 표시됨*/

 

구체성(specificity)의 원칙

specificity : 구체성은 '특이성, 명시도'로 표현 하기도 함

 

가중치

어떤 선택자가 더 구체적인지(명시적인지) 판단할때 가중치를 기준으로 판단한다.

id > class > 타입

 

* id와 class가 둘 다 지정되어있지만 id 선택자가 class 선택자 보다 가중치가 더 높아서 black 컬러가 반영되었다.

 

우선 순위 계산

위 이미지의 ul#primary-nav li.active의 점수는?

ID 선택자 100점 + Class 선택자 10점 + 2개의 Type 선택자 2점 => 총 112점

 

다른 예시

클래스 1개 vs 타입 12개