SASS 믹신과 함수, 익스텐드 완전 정복
SASS를 다루는 데 있어 가장 중요한 개념 중 하나는 재사용성입니다. 이번 글에서는 SASS에서 코드를 효율적으로 재사용하기 위한 주요 기능인 믹신, 함수, 그리고 익스텐드(extend) 사용법을 소개합니다. 스타일의 중복을 줄이고 유지 보수성을 높이려는 분이라면 반드시 알아야 할 개념들이죠.
믹신(Mixin)이란?
믹신은 반복해서 사용되는 스타일 블록을 재사용 가능한 코드로 만들 수 있게 해주는 기능입니다. 일종의 스타일 함수라고 보면 됩니다.
@mixin clearfix {
&::after {
content: "";
display: table;
clear: both;
}
}
이렇게 작성된 믹신은 다음처럼 포함시켜 사용할 수 있습니다:
.container {
@include clearfix;
}
이런 식으로 페이지 곳곳에서 동일한 스타일을 적용할 때 유용하며, 코드 중복을 방지하는 **DRY 원칙(Don’t Repeat Yourself)**을 지킬 수 있습니다.
인수를 받는 믹신
믹신은 인수를 받을 수도 있어 더 유연한 스타일을 작성할 수 있습니다.
@mixin style-link-text($color) {
text-decoration: none;
text-transform: uppercase;
color: $color;
}
a {
@include style-link-text(#333);
}
button {
@include style-link-text(#eee);
}
이렇게 하면 색상만 다르게 주고 같은 스타일을 여러 요소에 적용할 수 있습니다.
함수(Function)
SASS의 함수는 입력값을 받아 계산한 결과를 반환하는 기능으로, 믹신과 비슷하지만 값만 반환한다는 점이 다릅니다.
@function divide($a, $b) {
@return $a / $b * 1px; // 단위 보정
}
.element {
margin: divide(60, 2); // => 30px
}
실제로 SASS에는 darken, lighten 등의 기본 제공 함수가 있으며, 사용자 정의 함수도 작성할 수 있습니다. CSS 계산이 필요한 경우 매우 유용하죠.
익스텐드(Extend)
@extend는 스타일을 상속받는 방법입니다. 중복 스타일을 줄이면서 선택자 간의 관계를 만들어 줍니다.
%button-placeholder {
padding: 10px;
border: none;
cursor: pointer;
}
.button-main {
@extend %button-placeholder;
background: blue;
}
.button-hot {
@extend %button-placeholder;
background: red;
}
익스텐드는 스타일을 반복해서 출력하지 않고 CSS에 한 번만 작성되므로, 출력 파일을 최소화할 수 있다는 장점이 있습니다.
믹신과 익스텐드의 차이:
- 믹신은 호출한 곳마다 코드를 복사하여 붙여넣고,
- 익스텐드는 공통의 선택자 블록을 공유합니다.
정리
- @mixin: 재사용 가능한 스타일 블록 생성
- @include: 믹신 호출
- @function: 값을 반환하는 계산식 작성
- @extend: 선택자 간 스타일 공유
SASS를 잘 활용하면 CSS의 유지 보수성과 생산성이 크게 향상됩니다. 믹신, 함수, 익스텐드 기능을 적극적으로 활용해 보세요!