Skip to content
On this page

CSS 규칙 우선순위

수정하기
문서 생성 2021-09-16 13:53:56 최근 수정 2022-10-08 23:32:27

HTML 엘리먼트는 다양한 CSS 규칙의 타겟이 될 수 있다. 그리고 CSS 규칙에 우선순위가 있기 때문에 그 우선순위에 따라 어느 스타일이 적용이 될지 결정된다.

선택자에 따른 우선순위

더 높은 우선순위 그룹의 규칙이 있다면 낮은 그룹의 규칙은 무시가 된다. 여섯 개의 선택자 그룹을 우선순위에 따라 정리하면 다음과 같다.

  1. !important
  2. 인라인 스타일 속성
  3. 아이디 선택자
  4. 클래스/속성/가상 선택자
  5. 태그 선택자
  6. 전체 선택자

우선순위가 같은 선택자 그룹에 속해있다면?

규칙이 같은 선택자 그룹에 속해 있으면 선택자의 종류와 수에 따라 우선순위가 결정된다. 높은 우선순위의 선택자를 더 많이 사용한 규칙이 우선시되는 것이다.
아래 코드에서는 후자가 선택자의 종류가 더 많지만 전자는 클래스 선택자를 2개 사용하고 후자는 1개만 사용했으므로 전자의 우선순위가 더 높다. 따라서 color: blue;가 적용된다.

#introduction .message .warning span { color: blue; }
#introduction .message div p sapn { color: red ;}

코드 위치에 따른 우선순위

규칙이 같은 선택자 그룹에 속하고, 같은 순위의 선택자를 같은 수만큼 사용한다면 위치에 따라 결정이 된다. 우선순위가 높은 위치에 있는 규칙이 낮은 위치에 있는 규칙을 덮어쓴다.

  1. <head> 내부의 <style> 내부
  2. <style> 내부 @import 문으로 삽입한 CSS 파일
  3. <link>로 연결한 CSS 파일
  4. <link>로 연결한 CSS 파일 내부의 @import
  5. 마지막으로 연결한 CSS 파일
    • !important 규칙은 예외다. (1순위임)
  6. 브라우저의 기본 스타일

같은 코드 위치에 연결(삽입)된 경우 순서에 따라 우선순위가 결정된다. 나중에 연결(삽입)된 스타일이 우선순위가 높다. 그래서 <head> 내부에 <link>로 연결한 CSS 파일(External)과 <style> 내부 CSS는 작성된 순서에 따라 위치가 결정된다. CSS를-HTML에-적용하는-세-가지-방법 참고

충돌을 방지하려면

CSS 코드를 작성하는 동안 하나의 요소에 동일한 속성이 여러 번 적용되는 충돌 규칙을 작성하기 쉽다. 이를 방지하려면,

  • 엘리먼트가 웹페이지에 단 한번 나타나더라도, id 대신 class 사용하기
  • HTML 엘리먼트 하나가 여러 클래스를 갖고 있는 것을 피하기
  • inline style 사용하지 않기

reference

LINKS TO THIS PAGE

Tags