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의 장점
- 재사용성 증가
Mixin을 사용하면 스타일을 여러 요소에 반복해서 적용할 필요 없이 필요할 때마다 임포트하여 사용할 수 있습니다. - 유지보수성 향상
코드 중복을 피하고, 스타일 변경이 필요한 경우 Mixin 내부만 수정하면 됩니다. 이는 유지보수를 더 효율적으로 만듭니다. - 가독성 향상
Mixin을 사용하면 코드의 가독성을 향상시킬 수 있습니다. 특정 스타일이 어떤 목적으로 사용되는지 명시적으로 표현할 수 있습니다. - 동적인 스타일링
Mixin 내부에 변수를 사용하여 동적인 스타일을 생성할 수 있습니다. 이는 다양한 상황에 대응하기에 용이합니다. - 모듈러 디자인
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의 사용 예시와 결과를 확인할 수 있습니다.
필요에 따라 수정하여 프로젝트에 적용해보세요!
'CSS' 카테고리의 다른 글
scss 반복문 사용하는 방법과 자주쓰는 유용한 반복문 (0) | 2024.01.01 |
---|---|
How to style custom scrollbars with css (0) | 2021.01.07 |
How to set input placeholder color (0) | 2021.01.07 |
prevent zooming when the input focus on mobile (0) | 2021.01.07 |
모바일 시스템 폰트 설정, Mobile System Font (0) | 2020.12.19 |
댓글