본문 바로가기
프론트엔드

[CSS] 우선순위 cascading

by 김씨 학생 2024. 1. 20.
우선순위

 

캐스케이딩 (Cascading)

하나의 요소는 하나 이상의 CSS 선언에 영향을 받을 수 있다.
이 때 충돌을 피하기 위해서 CSS 적용 우선순위가 필요하다.

 

 

 

CSS 우선순위 적용 요소

1. 중요도: CSS가 어디에 선언되어 있는지에 따라서 우선순위가 달라진다.

  1. 인라인 스타일(HTML 태그 내부에 style 속성으로 사용)
  2. 내부 스타일 시트(HTML 문서의 style 태그 안에 위치)
  3. 외부 스타일 시트(CSS 파일을 외부에 따로 만들어서 불러오는 방법)
  4. 웹 브라우저 기본 스타일

 

2. 명시도: 명확하게 특정할 수록 우선순위가 높아진다.

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

 

3. 선언 순서

  1. 나중에 선언된 스타일이 우선 적용된다.

 

 

예시

[HTML]

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="cascading.css">
    <title>스타일 우선순위</title>
    <style>
        #banana {
            font-size: 12px;
        }

        /*
            가까운 곳에 위치한 .apple은
            더 멀리있는 div.apple보다
            우선순위가 높아보이지만,
            div.apple이 더 구체적이기 때문에,
            div.apple에 설정한 핑크색이 적용된다.
         */
        .apple {
            color: red !important;
            font-size: 30px;
        }

        .banana {
            color: green;
            /* color: green !important; */
        }
    </style>
</head>
<body>
    <p id="banana" class="apple banana" style="color: brown !important;">바나나</p>
    <div class="apple">사과</div>
</body>
</html>

 

 

[CSS]

div.apple {
    color: pink;
    font-size: 12px;
}

 

 

우선 순위를 간단하게 정리하자면...

[ !important > 인라인 스타일 > 아이디 > 클래스 ] 순서 이므로, style="color: brown !important;" 부분이 1순위가 되며

html 문서 내에 color: red !important; 에서 !important가 없었으면 더 구체적인 CSS 파일내 있는 핑크색으로 됐겠지만

!imporatnt가 붙어있는 빨간색으로 바뀔 것이다.

'프론트엔드' 카테고리의 다른 글

[CSS] 폰트  (0) 2024.01.20
[CSS] 상속  (0) 2024.01.20
HTML form 태그  (0) 2024.01.19
HTML 디스플레이 (Display)  (0) 2024.01.17
HTML 이미지 태그  (0) 2024.01.17