CSS 선택자 특이성이 무엇이며 어떻게 작동하나요?
브라우저는 CSS 규칙의 특이성에 따라 요소에 어떤 스타일을 표시할지 결정합니다. 브라우저가 특정 요소와 일치하는 규칙을 이미 결정했다고 가정합니다. 일치하는 규칙 중에서 다음과 같은 기준으로 각 규칙에 대해 쉼표로 구분된 4개의 값인 'a, b, c, d'의 특이성이 계산됩니다:
- 'a'는 인라인 스타일이 사용되는지 여부입니다. 속성 선언이 요소에 대한 인라인 스타일이면 'a'는 1이고, 그렇지 않으면 0입니다.
- 'b'는 ID 선택자의 수입니다.
- 'c'는 클래스, 속성 및 가상 클래스 선택자의 수입니다.
- 'd'는 태그 및 가상 요소 선택자의 수입니다.
결과 특이성은 점수가 아니라 열별로 비교할 수 있는 값의 행렬입니다. 어떤 선택자가 가장 높은 특이성을 갖는지 결정하기 위해 선택자를 비교할 때 왼쪽에서 오른쪽으로 보고 각 열에서 가장 높은 값을 비교합니다. 따라서 'b' 열의 값은 'c' 및 'd' 열의 값을 무엇이든 상관없이 재정의합니다. 예를 들어, '0,1,0,0'의 특이성은 '0,0,10,10'보다 큽니다.
특이성이 동일한 경우: 최신 규칙이 중요합니다. 스타일시트(내부 또는 외부와 상관없이)에 동일한 규칙을 두 번 작성한 경우, 스타일시트의 아래쪽 규칙이 스타일을 적용할 요소에 더 가깝기 때문에 더 특이한 것으로 간주되어 적용됩니다.
필요한 경우 쉽게 재정의할 수 있도록 특이성이 낮은 CSS 규칙을 작성할 것입니다. CSS UI 컴포넌트 라이브러리 코드를 작성할 때는 라이브러리 사용자가 특이성을 높이기 위해 복잡한 CSS 규칙을 사용하거나 '!important'를 사용하지 않고도 재정의할 수 있도록 특이성이 낮아야 합니다.