티스토리 뷰

반응형

우리 퍼블리싱을 배울 때 캐스케이딩에 대해 직접적으로 알려주는 사람은 잘 없다. 때문에 간과하기 쉽지만 CSS에도 작성 규칙이 존재한다는 사실을 꼭 알고 있어야 한다. 하나의 프로젝트에 여러 작업자가 협업하는 경우가 많기 때문에 이러한 기본적인 규칙을 지키면서 작업해야 효율적인 작업이 가능하다. 잘 알고 있겠지만 큰 프로젝트일수록 더 많은 퍼블리셔와 디자이너, 개발자와의 협업으로 진행된다. 작업의 결과만 중요한 게 아니라 과정도 중요하다는 사실을 염두에 두자.

 

 

 

 

 

 

 

 

 

CSS 구체성

요소를 선택할 때 더 구체적으로 선언된 선택자가 우선적으로 적용된다. 이 규칙을 CSS 구체성(Specificity Calculator)이라고 하며, 이는 수치화되어 값이 클수록 구체성이 높고 할 수 있다.

 

CSS 구체성 계산

구체성 값이 클수록 우선 적용한다.

좌측 값부터 비교하며, 좌측 값이 높을수록 구체성이 더 높다.

0, 0, 0, 0 : 전체 선택자(*)
1, 0, 0, 0 : HTML 내 Inline 스타일
0, 1, 0, 0 : 선택자에 있는 모든 id 속성 값
0, 0, 1, 0 : 선택자에 있는 모든 class 속성 값, 가상 클래스, 기타 속성 값
0, 0, 0, 1 : 선택자에 있는 모든 요소, 가상 요소

(>, + 등의 조합자는 구체성에 영향을 주지 않는다.)

 

예시

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
  <!-- 1, 0, 0, 0 (inline-style) -->
  <h1 id="tit1" class="tit" style="color:blue;">코딩 정복하기</h1>
</body>
</html>

 

/* 0, 0, 0, 0 */
* {color: red;}

/* 0, 1, 0, 0 */
#tit1 {color: red;}

/* 0, 0, 1, 0 */
.tit {color: red;}

/* 0, 0, 0, 1 */
h1 {color: red;}

/* 0, 0, 1, 1 */
h1.tit {color: red;}

/* 0, 0, 1, 2 */
body h1.tit {color: red;}

 

 

CSS 구체성 계산 예시

<!-- 1, 0, 0, 0 -->
<h1 id="tit1" style="color:red">코딩 정복하기</h1>

 

/* 0, 1, 0, 1 */
h1#tit1 {color:blue}

 

코딩 정복하기

 

 

 

!important

!important의 경우 구체성 점수를 무시하고 우선적으로 적용된다. 때문에 유지보수를 위해 꼭 필요할 경우에만 쓰는 것이 좋다.

 

<!-- 1, 0, 0, 0 -->
<h1 id="tit1" style="color:red">코딩 정복하기</h1>
/* 0, 1, 0, 1 */
h1#tit1 {color:blue !important}

 

→  코딩 정복하기

 

 

 

CSS 구체성 순서 요약

!important > inline > id > class > element

 

 

 

 

CSS 상속

CSS 박스 모델의 속성은 부모의 속성이 자식으로 상속되지 않는다. 전체 선택자에 속성이 있을 경우, 상속된 부모의 속성은 구체성이 없으므로 전체 선택자의 속성이 우선적으로 반영된다.

 

<div>
    <p id="txt">코딩 <em>완벽하게</em> 정복하기</p>
</div>

 

* {color: blue;}
div {color: green;}
p#txt {color: red;}

 

→ 코딩 완벽하게 정복하기

 

 

 

만약 전체 선택자에 지정된 속성이 없다면, 부모의 속성 중 구체성이 높은 속성이 우선적으로 반영된다.

 

<div>
    <p id="txt">코딩 <em>완벽하게</em> 정복하기</p>
</div>

 

/* 0, 0, 0, 1 */
div {color: green;}
/* 0, 1, 0, 1 */
p#txt {color: red;}

 

코딩 완벽하게 정복하기

 

 

 

 

 

 

캐스케이딩

캐스케이딩(Cascading)이란, CSS(Cascading Style Sheets)의 약자에서도 볼 수 있는데 CSS 우선순위에 따라서 스타일이 정해진다는 뜻이다. 우선순위는 중요도, 명시도(구체성), 코드 순서에 따라 정해진다.

 

<div>
    <h1 id="tit1">코딩 정복하기</h1>
</div>

 

 

1. 구체성이 같은 동일한 요소의 경우, 코드 순서에 따라 스타일이 정해진다.

 

h1 {color: blue;}

h1 {color: red;}

 

→ 코딩 정복하기

 

 

 

2. 구체성이 다른 경우 코드 순서와 상관없이 구체성이 높은 순서에 따라 스타일이 정해진다.

 

/* 0, 1, 0, 1 */
h1#tit1 {color: blue;}

/* 0, 0, 0, 1 */
h1 {color: red;}

 

코딩 정복하기

 

 

 

 

 

 

반응형
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31