카테고리 없음

7-10. CSS 선택자 : 구체성

김종원 2021. 8. 25. 19:16

7-10. CSS 선택자 : 구체성

 

 가. 정의

 

   - 스타일을 적용할 어떠한 요소에 적용되는 CSS 스타일이 2가지 이상이어서 상충할 때,

     브라우저가 어떠한 스타일을 우선하여 적용할 지 선택하는 그 판단기준

   - 구체성은 선택자를 얼마나 명시적(구체적 및 정확성)으로 선언했는가를 수치화 한 것

 

 나. 구체성의 규칙

 

   - 구체성은 " 0, 0, 0, 0 " 4개의 숫자 값으로 이루어져 있음

   - 아래와 같이 선택자마다 각자 구체성 값이 입력되는 자리가 있으며, 선택자 하나당 그 값은 1

  ㆍ 1, 0, 0, 0 : 직접 HTML 태그 내에 선언한 인라인 스타일 방식
  ㆍ 0, 1, 0, 0
: 선택자에 있는 id 속성값(#)
  ㆍ 0, 0, 1, 0
: 선택자에 있는 class 속성값(.), 가상 class(:), 기타속성
  ㆍ 0, 0, 0, 1
: 선택자에 있는 모든 요소(태그), 가상요소(태그)(::)
  ㆍ 0, 0, 0, 0
: 선택자에 있는 전체선택자(*)

  !important
: 이 키워드는 구체성 값은 없지만, 모든 구체성 값을 무시하고 우선권을 갖음
                            CSS 규칙의 속성값 맨뒤 한 칸 공백 후 !important
입력
  ㆍ 전체선택자 및 조합자(>, +, ~)는 구체성에 영향을 주지 않음

 

 다. 예시

  1   h1{...}
  2   body h1{...}
  3   .grape{...}
  4   * .bright{...}
  5   p .bright em .dark{...}
  6   #page{...}
  7   div #page{...}
  8 <p id="page">...</p>
  9   h1{... !important}
→  0, 0, 0, 1
→  0, 0, 0, 2
→  0, 0, 1, 0
→  0, 0, 1, 0
→  0, 0, 2, 2
→  0, 1, 0, 0
→  0, 1, 0, 1
→  1, 0, 0, 0
  구체성 값 없으나 우선권 있음

   - 위 표에서 가장 구체성 값이 높은 코드는 8번이나, 9번이 !important 로 제일 우선권을 갖음