자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!
 

[Sass] 5장 상속(Inheritance) 사용법

728x90

✅ 1. 상속(Inheritance)란 

Sass에서 상속은 공통 스타일을 여러 서택자에 재사용하고 싶을 때 유용하며, CSS에서 클래스 반복을 줄이고 유지보수를 쉽게 해주는 기능입니다. Sass에서 @extend를 사용해 다른 셀렉터의 스타일을 상속할 수 있으며 즉, 하나의 클래스를 기준 스타일로 만들고, 다른 클래스가 이를 그대로 가져오는 구조입니다.

// style.scss

.button {
  padding: 10px 20px;
  background-color: cornflowerblue;
  color: #fff;
  border-radius: 5px;
}

.primary-button {
  @extend .button;
  background-color: green;
}

.secondary-button {
  @extend .button;
  background-color: gray;
}
// style.css
.button, .secondary-button, .primary-button {
  padding: 10px 20px;
  background-color: cornflowerblue;
  color: #fff;
  border-radius: 5px;
}

.primary-button {
  background-color: green;
}

.secondary-button {
  background-color: gray;
}

/*# sourceMappingURL=style.css.map */
  • .primary-button과 .secondary-button이 .button의 상속 받아 padding, color, border-radius를 그대로 사용
  • background-color는 각 클래스에서 덮어쓰기 가능

✅ 2. 상속 대상에 placeholder 사용

Sass에서는 %로 시작하는 placeholder selector를 사용해 실제 CSS에 출력되지 않고 오직 상속용으로만 정의가 가능합니다.

// placeholder.scss
%button-base {
  padding: 10px 20px;
  color: #fff;
  border-radius: 5px;
}

.primary-button {
  @extend %button-base;
  background-color: green;
}

.secondary-button {
  @extend %button-base;
  background-color: gray;
}
// placeholder.css
.secondary-button, .primary-button {
  padding: 10px 20px;
  color: #fff;
  border-radius: 5px;
}

.primary-button {
  background-color: green;
}

.secondary-button {
  background-color: gray;
}

/*# sourceMappingURL=style.css.map */
  • %button-base는 CSS에 직접 나타나지 않고, 상속하는 클래스에서만 적용
  • 이렇게 하면 불필요한 .button 클래스가 남지 않음

✅ 3. 중접(Nesting)과 상속

Sass의 상속은 중첩된 선택자에도 적용됩니다.

// nesting.scss
.card-primary,
.card-secondary {
  border: 1px solid #ccc;
  padding: 20px;
  background-repeat: 10px;
}

.card-primary {
  background-color: #f0f8ff;
}

.card-primary h2 {
  color: blue;
}

.card-secondary {
  background-color: #f5f5f5;
}

.card-secondary h2 {
  color: aliceblue;
}
// nesting.css
.card-primary,
.card-secondary {
  border: 1px solid #ccc;
  padding: 20px;
  background-repeat: 10px;
}

.card-primary {
  background-color: #f0f8ff;
}

.card-primary h2 {
  color: blue;
}

.card-secondary {
  background-color: #000;
}

.card-secondary h2 {
  color: green;
}

/*# sourceMappingURL=nesting.css.map */
  • 부모 .card-primary와 .card-secondary가 %card 스타일을 공유
  • 내부 h2는 각 클래스에서 별도로 스타일 적용 가능

✅ 4. 주의 사항

  • 무분별한 상속 금지: 상속을 너무 많이 사용하면 CSS 선택자가 길어질 수 있음
  • Placeholder 권장: 상속용 클래스를 실제 CSS에 남기고 싶지 않다면 % 사용
  • Mixin과 비교: @mixin은 함수처럼 값을 전달 가능하고, CSS를 재사용하지만 매번 새롭게 코드를 생성 
    • @extend는 코드 중복을 줄여 선택자를 합쳐서 출력
    • 유지보수 측면에서는 큰 프로젝트에서 placeholder + extend 추천 

 

 

GitHub - Koras02/sass-bloging: https://thinky.tistory.com/category/Front-End/SASS

https://thinky.tistory.com/category/Front-End/SASS - Koras02/sass-bloging

github.com

 

728x90
LIST

'Front-End > SASS' 카테고리의 다른 글

[Sass] 4장 믹스인(Mixin) 생성 및 사용  (0) 2025.08.07
[Sass] 3장 Nesting  (0) 2025.03.27
[Sass] 2장 기본 문법 - Sass 변수 사용법  (0) 2025.03.25
[Sass] 1장 Sass란?  (0) 2025.03.09