본문 바로가기
CODEIT;

CSS 핵심 개념 : 스타일 계산하기 정리

by ♡˖GYURI˖♡ 2023. 9. 18.

캐스케이드 (Cascade)

최종적으로 적용할 CSS 속성들을 결정할 때, 계단식 폭포처럼 CSS 규칙을 순서에 따라 합쳐서 작용하는 것

우선순위가 높은 규칙일수록 우선적으로 속성을 적용함

 

스타일 시트의 종류

브라우저에서 기본으로 제공하는 스타일시트(User Agent Stylesheet)는 똑같은 선택자를 쓰고 있다면 우리가 작성한 코드보다 우선순위가 낮음

 

예를 들어서 브라우저 기본 CSS에서 아래처럼 쓰고 있다고 가정

h2 {
  display: block;
  font-size: 1.5em;
  ...
  font-weight: bold;
}

이 때, 우리가 style.css 파일에서 아래처럼 쓰면, 우리가 작성한 스타일시트(Author Stylesheet)의 우선순위가 더 높기 때문에 글자 크기는 2em이 됨

h2 {
  font-size: 2em;
}

 

코드 상의 순서

코드에서 아래 쪽에 쓴 코드일수록 우선순위가 높음

예를 들어 아래 코드에서 글자 크기는 2em이 됨

<span class="address">강원특별자치도 춘천시 중앙로 1</span>
.address {
    font-size: 1em;
}

.address {
  font-size: 2em;
}

 

명시도

선택자마다 명시도 점수가 있음

간단히 말해서 아이디 개수, 클래스 개수, 태그 개수를 적어서 점수를 비교함

예를 들어서 아래 코드에서 a.order 는 0 1 1 이지만 a#info 는 1 0 1 이기 때문에 명시도는 a#info 가 더 높음

a.order { /* 아이디 0, 클래스 1, 태그 1 = 명시도 0 1 1 */
  ...
}

a#info { /* 아이디 1, 클래스 0, 태그 1 = 명시도 1 0 1 */
  ...
}

 

상속

부모 태그에 적용된 CSS 규칙은 자손에게도 상속됨

모든 속성이 상속되는 건 아니고, 상속되는 속성들이 정해져 있음

 

상속된 속성의 우선순위

조상 태그들에서 스타일이 모두 계산된 상태에서 우선순위를 따짐

가까운 조상에게 물려받은 속성일수록 우선순위가 높음

예를 들어서 아래 코드에서 a.order 태그(.order 클래스가 있는 <a> 태그)에 적용되는 글자색은 #ccccccc

<body>
    <div id="info">
      <p class="description">
        ...<a class="order" ...>주문</a>
      </p>
    </div>
</body>
body {
  color: #000000;
}

#info {
  color: #aaaaaa;
}

.description {
  color: #bbbbbb;
}

.order {
  color: #cccccc;
}

a.order 태그에 적용되는 속성들을 캐스케이딩의 우선순위가 높은 순으로 나열해보면 다음과 같음

.order {
  color: #cccccc;
}
/* p.description 태그(부모 태그)에서 상속받은 속성 */
{
  color: #bbbbbb;
}
/* div#info 태그(조부모 태그)에서 상속받은 속성 */
{
  color: #aaaaaa;
}
/* body 태그(증조부모 태그)에서 상속받은 속성 */
{
  color: #000000;
}

 

상속되는 속성들

대표적으로 다음 속성들은 상속 됨

color, font-family, font-size, font-weight, line-height, text-align, ...

https://developer.mozilla.org/en-US/docs/Web/CSS/color

 

color - CSS: Cascading Style Sheets | MDN

The color CSS property sets the foreground color value of an element's text and text decorations, and sets the currentcolor value. currentcolor may be used as an indirect value on other properties and is the default for other color properties, such as bord

developer.mozilla.org