CSS 상속 및 캐스캐이딩

jiseong·2021년 7월 29일
0

T I Learned

목록 보기
9/291

상속(Inheritance)

  • 상속은 부모가 가진 특성을 자식이 물려받는 개념이다.
  • CSS에서 모든 Property가 상속되는 것은 아니다.
    • (e.g. width/height, margin, display, ...)
    • 하지만 inherit 키워드를 이용하면 명시적으로 상속받게 할 수 있다.
  • 모든 요소도 상속 받는 것은 아니다.
📝코드
.class1 {
    color: blue;  
}
<div class='class1'>
    <p>Hello</p>
    <p>World</p>
    <p>!!!</p>
    <button>click me</button>
</div>
💻결과
.class1 > button {
   color: inherit;
}

❓ 참조

* {
    color: red;
}
.class1 {
    color: blue;  
}
 <h1 class='class1'>Hello, <strong>World</strong></h1>
  • Hello,와 World 둘다 색상이 blue일거라 생각되지만 World 색상은 Red이다. 왜냐하면 상속된 속성은 구체성을 가지지 못하기 때문에 우선순위에 밀리게 되어 전체 선택자의 속성을 가진다.

캐스캐이딩(Cascading)

  • 하나의 요소에 하나 이상의 CSS 선언을 할 수 있다. 그렇기 때문에 규칙이 필요한데 이를 캐스캐이딩 이라고 한다.
  • 캐스캐이딩은 크게 세 가지 규칙이 존재한다.

    중요도

    • 1. 프로그래머 CSS
    • 2. 사용자 CSS
    • 3. 브라우저 CSS

    구체성

    • 명확하게 특정할 수록 우선순위가 높아진다.

      !important > 인라인 스타일 > 아이디 선택자 > 클래스/어트리뷰트/가상 선택자 > 태그 선택자 > 전체 선택자 > 상위 요소에 의해 상속된 속성

    선언순서

    • 선언 순서에 따라 우선순위가 다르다.
      나중에 선언된 스타일이 우선 적용

❓ 참조
Q. "index 1"의 폰트 색상은?

<style>
  .box { color: red !important; }
  .index > .in_item { color: pink; }
  div ul .in_item { color: orange; }
  .in_item.in1 { color: black; }
  p + ul.index { color: yellow; }
</style>
<div class="box" style="color: yellow">
  <h1 class="title">title</h1>
  <p class="desc">description</p>
  <ul class="index" style="color: blue;">  
    <li class="in_item in1">index 1</li>
    <li class="in_item ">index 2</li>
  </ul>
</div>

정답은 아래를 드래그 해주세요.

[black입니다] CSS 규칙에 따라 직접 대상 요소는 요소가 부모로부터 상속받는 규칙보다 항상 우선시 하기 때문에 아무리 important와 인라인으로 지정했더라도 li 대상 요소는 구체성이 높은 black으로 지정된다.

Reference

0개의 댓글

관련 채용 정보