CSS에서 스타일 충돌이 발생할 때 어떤 규칙이 적용되는지를 결정하는 핵심 요소는 Specificity(특이성)입니다. 또한, CSS 속성의 상속 여부를 이해하면 불필요한 스타일 지정 문제를 줄이고 코드 효율성을 높일 수 있습니다. 이 글에서는 Specificity와 더불어 CSS 속성의 상속 여부를 확인하는 방법을 알아보겠습니다.
CSS의 Specificity는 각 규칙이 HTML 요소에 적용되는 우선순위를 결정하는 값입니다. 특정 규칙의 Specificity는 다음 4가지 구성 요소로 계산됩니다:
1,0,0,0
0,1,0,0
0,0,1,0
0,0,0,1
각 구성 요소는 독립적으로 계산되며, 높은 값을 가진 규칙이 우선합니다.
.class
):0,0,1,0
div p span
):0,0,0,3
0,0,1,0
이 태그 선택자의 Specificity 값 0,0,0,3
보다 높습니다./* 클래스 선택자 */
.class {
color: red;
}
/* 세 개의 태그 선택자 */
div p span {
color: blue;
}
<div>
<p>
<span class="class">텍스트</span>
</p>
</div>
red
색상이 적용됩니다..class
)의 Specificity 값이 태그 선택자(div p span
)보다 높기 때문입니다.일부 CSS 속성은 부모 요소에서 자식 요소로 자동으로 상속됩니다. 예를 들어, color
나 font-size
같은 타이포그래피 관련 속성은 기본적으로 상속됩니다. 반면, margin
, padding
등 레이아웃 관련 속성은 상속되지 않습니다.
MDN CSS Properties Reference 사용:
Inherited
필드를 확인하세요.예시: color
속성:
Inherited: yes
로 명시되어 있습니다.color
속성은 상속됩니다.inherit
값을 사용할 수 있습니다:p {
margin: inherit; /* 부모 요소의 margin 값을 상속 */
}
Specificity:
상속:
color
, font-family
등 일부 속성은 상속되지만, margin
, padding
등은 상속되지 않습니다.