태그 속성의 포함 관계 - 상속(inheritance)

스타일 시트에서는 자식 요소에서 별도로 스타일을 지정하지 않으면 부모 요소에 있는 스타일 속성들이 자식요소로 전달되는데 이것을 '스타일 상속'이라고 합니다.
2 min read

웹 문서에서 사용하는 여러 태그들은 서로 포함 관계가 있습니다. 포함하는 태그를 부모 요소, 포함된 태그를 자식 요소라고 합니다. 스타일 시트에서는 자식 요소에서 별도로 스타일을 지정하지 않으면 부모 요소에 있는 스타일 속성들이 자식요소로 전달되는데 이것을 '스타일 상속'이라고 합니다.

상속(inheritance)

상속을 이용하면 스타일 시트를 효과적으로 꾸밀 수 있습니다. 웹 문서의 모든 텍스트에 같은 글꼴을 사용하려면 각 요소마다 글꼴을 지정하지 않고 <body> 태그에 글꼴 스타일을 작성하면 <body> 태그 이하의 자식 요소에 같은 글꼴이 적용되기 때문입니다.

다만 주의 할 것은 스타일의 모든 속성이 상속되는 것이 아니라는 점입니다. CSS 속성은 상속하는 속성상속하지 않는 속성이 있습니다.

 

상속하는 속성

예를 들어 color는 상속하는 속성입니다. 부모 요소에서 정한 색이 자식 요소에도 적용됩니다.

<p>Lorem <em>Ipsum</em></p>
p {
  color: blue;
}

Lorem 뿐만 아니라 Ipsum의 색도 파란색이 됩니다.

 

상속하지 않는 속성

예를 들어 padding은 상속하지 않는 속성입니다. 부모 요소에서 속성을 정의해도 자식 요소에 적용되지 않습니다.

<p>Lorem <em>Ipsum</em></p>
p {
  color: blue;
}
p {
  padding: 20px;
}

<p> 요소에만 안쪽 여백을 만들고 <em> 요소에는 안쪽 여백을 만들지 않습니다.

 

종합 예제

  • color는 상속하는 속성이므로 자식 요소의 색도 주황색으로 만듭니다.
  • <button>처럼 상속을 받지 않는 요소도 있습니다.
  • borderpadding은 상속하지 않는 속성이므로 <div> 요소에만 적용됩니다.
<div class="abc">
  <h1>Heading</h1>
  <p>Paragraph <em>Emphasize</em></p>
  <button>Button</button>
</div>
.abc {
  color: orange;
  border: 1px solid #bcbcbc;
  padding: 10px 20px 20px 20px;
}

부모 요소로부터 스타일 상속했어도 모든 스타일을 해결할 수 있는 것은 아닙니다. 스타일끼리 충돌이 생길 경우 명시도나 소스 순서 등에 따라 우선 순위가 달라집니다.

 

기타 CSS 참조

You may like these posts

  • 선택자로도 지정하기 어려운 대상이 있습니다. 예를 들어 몇 번째 항목이라든가 문단의 첫 번째 글자 등의 경우 어떻게 지정해야 할까요? 이럴 때 가상 요소와 가상 클래스를 사용합니다. 가상 요소는 내용의 일부만 선택해 스타일을 적용할 때 사용합니다. 목차 가상 요소 가상 요소(Ps…
  • 웹 문서 안에는 여러 개의 스타일 규칙이 사용되는 경우가 많습니다. 이런 스타일 규칙들을 한눈에 확인하고 필요할 때마다 수정하기 쉽도록 한 군데 묶어 놓은 것을 '스타일 시트' 라고 합니다. 스타일 시트는 문서 안에서 사용할 스타일 규칙들을 정의한 '내부 스타일 시트'와 별도의 스타일 파일을 만들어 문…
  • HTML로는 웹 사이트의 내용을 나열하고 CSS로는 웹 문서의 디자인을 구성한다는 아이디어가 바로 웹 표준의 시작입니다. 이렇게 내용과 디자인이 구분되어 있기 때문에 사이트의 내용을 수정해야할 때도 디자인에 전혀 영향을 미치지 않고 내용만 수정할 수 있습니다. 또한 반대로 내용은 건드리지 않은 상태에서 스…
  • 스타일 속성을 적용하는 요소를 '선택자(selector)'라고 부릅니다. 이번에는 아이디 선택자와 클래스 선택자에 대해서 살펴보겠습니다. 목차 아이디 선택자 (ID Selector) 아이디 선택자는 특정 값을 id 속성(attribute)의 값으로 갖는 요소(element)를 선택…
  • 스타일 속성을 적용하는 요소를 '선택자(selector)'라고 부릅니다. 먼저 전체 선택자, 타입 선택자, 속성 선택자를 살펴보겠습니다. 목차 전체 선택자 (Universal Selector) 전체 선택자는 모든 HTML 요소를 선택합니다. 별표( * )로 나타냅니다. 예를 들…
  • !important CSS는 같은 속성을 여러 번 정의했을 때,나중에 설정한 값이 우선 순위로 적용됩니다. 만약 나중에 설정한 값이 적용되지 않게 하려면 !important를 속성값 뒤에 붙입니다.   기본형 selector { property: value !important; …

Post a Comment