본문 바로가기
CSS

유용한 scss 믹스인 모음과 장점

by memory-log 2024. 1. 1.

SCSS Mixin이란?

SCSS Mixin은 스타일 시트에서 재사용 가능한 코드 조각을 정의하는 데 사용되는 기능입니다. 이는 함수와 비슷한 개념으로, 스타일 속성의 그룹을 정의하고 필요할 때 이를 임포트하여 사용할 수 있게 해줍니다.

 

SCSS Mixin 구문

@mixin mixin-name($parameter1, $parameter2, ...) {
  property: value;
  // 다양한 스타일 속성들...
}

.element {
  @include mixin-name(value1, value2, ...);
  // 다른 스타일 속성들...
}

SCSS Mixin 사용 예시

@mixin border-radius($radius) {
  border-radius: $radius;
}

.button {
  @include border-radius(5px);
}

 

위의 예시에서 border-radius라는 Mixin을 정의하고, 이를 button 클래스에 적용하고 있습니다.

SCSS Mixin의 장점

  1. 재사용성 증가
    Mixin을 사용하면 스타일을 여러 요소에 반복해서 적용할 필요 없이 필요할 때마다 임포트하여 사용할 수 있습니다.
  2. 유지보수성 향상
    코드 중복을 피하고, 스타일 변경이 필요한 경우 Mixin 내부만 수정하면 됩니다. 이는 유지보수를 더 효율적으로 만듭니다.
  3. 가독성 향상
    Mixin을 사용하면 코드의 가독성을 향상시킬 수 있습니다. 특정 스타일이 어떤 목적으로 사용되는지 명시적으로 표현할 수 있습니다.
  4. 동적인 스타일링
    Mixin 내부에 변수를 사용하여 동적인 스타일을 생성할 수 있습니다. 이는 다양한 상황에 대응하기에 용이합니다.
  5. 모듈러 디자인
    Mixin을 활용하면 모듈화된 스타일을 만들 수 있어, 프로젝트의 스타일을 더 체계적으로 구성할 수 있습니다.

1. Flexbox 믹신:

@mixin flex($direction: row, $justify: center, $align: center) {
  display: flex;
  flex-direction: $direction;
  justify-content: $justify;
  align-items: $align;
}

사용 예시:

.container {
  @include flex(column, space-between, center);
}

결과:

.container {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
}

2. 반응형 폰트 크기 조절:

@mixin responsive-font($min-font-size, $max-font-size, $viewport-width: 320px, $viewport-max: 1920px) {
  font-size: $min-font-size;
  @media (min-width: $viewport-width) {
    font-size: calc(#{$min-font-size} + #{$max-font-size - $min-font-size} * ((100vw - #{$viewport-width}) / #{$viewport-max - $viewport-width}));
  }
  @media (min-width: $viewport-max) {
    font-size: $max-font-size;
  }
}

사용 예시:

.text {
  @include responsive-font(16px, 24px);
}

결과:

.text {
  font-size: 16px;
}

@media (min-width: 320px) {
  .text {
    font-size: calc(16px + 8px * ((100vw - 320px) / 1600));
  }
}

@media (min-width: 1920px) {
  .text {
    font-size: 24px;
  }
}

3. 텍스트 가운데 정렬:

@mixin center-text {
  text-align: center;
  line-height: 1.5;
}

사용 예시:

.heading {
  @include center-text;
}

결과:

.heading {
  text-align: center;
  line-height: 1.5;
}

4. 투명도 처리:

@mixin transparency($opacity: 0.5) {
  opacity: $opacity;
  @if $opacity < 1 {
    filter: alpha(opacity=#{$opacity * 100});
  }
}

사용 예시:

.transparent-box {
  @include transparency(0.8);
}

결과:

.transparent-box {
  opacity: 0.8;
  filter: alpha(opacity=80);
}

5. 버튼 스타일링:

@mixin button($bg-color, $text-color, $padding: 10px 20px, $border: none, $radius: 4px) {
  background-color: $bg-color;
  color: $text-color;
  padding: $padding;
  border: $border;
  border-radius: $radius;
  cursor: pointer;
  &:hover {
    background-color: darken($bg-color, 10%);
  }
}

사용 예시:

.custom-button {
  @include button(#3498db, #fff);
}

결과:

.custom-button {
  background-color: #3498db;
  color: #fff;
  padding: 10px 20px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}

.custom-button:hover {
  background-color: #2081c1;
}

 

이러한 방식으로 각 mixin의 사용 예시와 결과를 확인할 수 있습니다.

필요에 따라 수정하여 프로젝트에 적용해보세요!

댓글