웹 사이트를 제작하다보면 하나의 태그에 여러가지의 CSS가 적용될 때가 있다.
그럼 이때 같은 요소에 다른 CSS 속성이 중복 설정되어 있다면 어떤 것을 우선 순위로 적용될까?
아래의 순서를 참고해 보자! (상위의 속성부터 강한 순서)
!important
가 붙어있는 속성id
가 쓰인 속성class
, attribute
, pseudo-class
로 지정한 속성
- important: 무한대점
div { color: red !important; }
- 인라인 선언 방식: 1000점
<div> <p style="color: red;">Contents</p> </div>
- id 선택자: 100점
#name { color: red; }
- class 선택자: 10점
.name { color: red; }
- 태그 선택자: 1점
p { color: red; }
- 전체 선택자: 0점
* { color: red; }
- 부정 선택자: 0점
:not(p) { color: red; }
.list li.item
클래스(10) + 태그(1) + 클래스(10) = 21점
.list li:hover
클래스(10) + 태그(1) + 클래스(10) = 21점
✨ 가상클래스 hover도 클래스와 동일한 점수를 가진다.
.box::before
클래스(10) + 태그(1) = 11점
✨ 가상요소는 태그로 취급하여 태그와 동일한 점수를 가진다.
#submit span
id(100) + 태그(1) = 101점
header .menu li:nth-child(2)
태그(1) + 클래스(10) + 태그(1) + 클래스(10) = 21점
✨ nth-child 역시 가상클래스이기 때문에 클래스와 동일한 점수를 가진다.
:not(.box)
부정(0) + 클래스(10) = 10점