SASS에서 반복문 사용
이 글에서는 SASS에서 반복문을 처리하는 방법을 설명합니다.
실제 코드 예시를 사용해 SASS에서 반복문을 구현하는 방법을 단계별로 설명하겠습니다.
YouTube Video
SASS에서 반복문 사용
SASS에서 반복문을 사용하면 코드 중복을 피할 수 있고, 유연하고 재사용 가능한 스타일을 작성할 수 있습니다.
SASS에서 반복문을 사용하는 이유
반복문을 사용하면 다음과 같은 여러 가지 장점이 있습니다:.
- 코드의 재사용성이 향상되어, 유사한 패턴의 스타일을 쉽게 생성할 수 있습니다.
- 유지보수성이 향상되어, 스타일을 한 번에 수정하기가 쉬워집니다.
- 또한 오류를 줄일 수 있습니다.
예를 들어, 다양한 색상의 버튼이나 여러 크기의 컴포넌트 스타일을 한 번에 생성할 수 있습니다.
SASS에서 반복문에 사용하는 문법
SASS에서 반복문에 주로 사용하는 문법은 다음과 같습니다:.
@for를 사용하면 지정한 숫자 범위에 대해 반복 처리할 수 있습니다.@each를 사용하면 리스트나 맵(지도) 요소에 대해 반복할 수 있습니다.@while은 특정 조건이 충족될 때까지 반복문을 실행합니다.
@for를 사용한 반복문
@for는 지정한 숫자 범위에 따라 반복 처리를 실행합니다.
문법
1/*
2@for $i from <start> to <end> {
3 ...
4}
5
6@for $i from <start> through <end> {
7 ...
8}
9*/와 에는 반복의 시작 값과 끝 값을 지정합니다. to를 사용하면 끝 값이 포함되지 않고,through를 사용하면 끝 값이 포함됩니다.
예시
다음 코드는 1px씩 두께가 늘어나는 테두리 클래스를 자동으로 생성합니다.
1@for $i from 1 through 5 {
2 .border-#{$i} {
3 border-width: #{$i}px;
4 }
5}- 이 코드는 테두리 두께가 1px씩 증가하는 클래스를 자동으로 만듭니다. 여기서는
@for지시어를 사용해 1부터 5까지 반복합니다.
생성된 CSS
1.border-1 {
2 border-width: 1px;
3}
4.border-2 {
5 border-width: 2px;
6}
7.border-3 {
8 border-width: 3px;
9}
10.border-4 {
11 border-width: 4px;
12}
13.border-5 {
14 border-width: 5px;
15}.border-1부터.border-5까지의 클래스가 순차적으로 생성되며, 각 클래스의 테두리 두께는 1px씩 증가합니다.
@each를 사용한 반복문
@each는 리스트 또는 맵을 사용하여 반복문을 실행합니다. 반복되는 패턴의 클래스를 효율적으로 생성하고 싶을 때 유용합니다.
문법
1/*
2@each $item in <list> {
3 ...
4}
5*/예시 1: 리스트 사용
다음 코드는 여러 텍스트 색상 클래스를 생성합니다.
1@each $color in ("red", "blue", "green") {
2 .text-#{$color} {
3 color: #{$color};
4 }
5}- 이 코드는 리스트에 있는 각 색상마다 텍스트 색상 클래스를 자동으로 생성합니다.
@each지시어를 사용하여 리스트의 각 값을 순차적으로 처리합니다.
생성된 CSS
1.text-red {
2 color: red;
3}
4.text-blue {
5 color: blue;
6}
7.text-green {
8 color: green;
9}- SASS 파일을 CSS로 컴파일하면, 리스트에 있는 각 색상에 대해
.text-red,.text-blue,.text-green과 같은 클래스가 생성됩니다.
예시 2: 맵 사용
맵을 사용하면 키와 값을 쌍으로 처리할 수 있습니다. 다음 예시에서는 버튼 배경색을 맵으로 정의합니다.
1$colors: (
2 primary: #3498db,
3 success: #2ecc71,
4 danger: #e74c3c
5);
6
7@each $name, $hex in $colors {
8 .bg-#{$name} {
9 background-color: #{$hex};
10 }
11}생성된 CSS
1.bg-primary {
2 background-color: #3498db;
3}
4.bg-success {
5 background-color: #2ecc71;
6}
7.bg-danger {
8 background-color: #e74c3c;
9}- SASS 파일을 CSS로 컴파일하면, 맵에 있는 각 키에 대해
.bg-primary,.bg-success,.bg-danger와 같은 클래스가 생성됩니다.
@while을 사용한 반복문
@while은 조건이 참인 동안 반복문을 계속 실행합니다.
문법
1/*
2@while <condition> {
3 ...
4}
5*/예시
예를 들어, 글꼴 크기를 단계별로 증가시키고 싶을 때 아래와 같이 작성할 수 있습니다:.
1$i: 1;
2
3@while $i <= 5 {
4 .font-#{$i} {
5 font-size: #{$i}rem;
6 }
7 $i: $i + 1;
8}- 글꼴 크기를 단계적으로 증가시킬 때
@while지시어를 활용해서 반복 처리를 할 수 있습니다. 변수 $i를 사용해 1부터 5까지 값에 대해 클래스가 자동으로 생성됩니다.
생성된 CSS
1.font-1 {
2 font-size: 1rem;
3}
4.font-2 {
5 font-size: 2rem;
6}
7.font-3 {
8 font-size: 3rem;
9}
10.font-4 {
11 font-size: 4rem;
12}
13.font-5 {
14 font-size: 5rem;
15}- SASS 파일을 CSS로 컴파일하면, 1rem부터 5rem까지 글꼴 크기가 증가하는 클래스들이 자동으로 생성됩니다.
고급 예시: 반복문과 중첩의 조합
반복문과 SASS의 중첩 기능을 조합하면 더욱 고급스러운 스타일 생성을 할 수 있습니다.
예시
아래는 버튼의 배경색과 hover 색상을 함께 정의한 예시입니다.
1@use "sass:color";
2
3$colors: (
4 primary: #3498db,
5 success: #2ecc71,
6 danger: #e74c3c
7);
8
9@each $name, $hex in $colors {
10 .btn-#{$name} {
11 background-color: $hex;
12 color: white;
13
14 &:hover {
15 background-color: color.scale($hex, $lightness: -10%);
16 }
17 }
18}- 반복과 SASS 중첩을 결합하면 버튼 배경색과 호버 색상을 한 번에 생성할 수 있습니다. 맵의 각 색상에 대해
.btn-클래스를 생성하고, 중첩을 사용하여:hover스타일을 정의합니다.
생성된 CSS
1.btn-primary {
2 background-color: #3498db;
3 color: white;
4}
5.btn-primary:hover {
6 background-color: #2980b9;
7}
8.btn-success {
9 background-color: #2ecc71;
10 color: white;
11}
12.btn-success:hover {
13 background-color: #27ae60;
14}
15.btn-danger {
16 background-color: #e74c3c;
17 color: white;
18}
19.btn-danger:hover {
20 background-color: #c0392b;
21}- SASS 파일을 CSS로 변환하면 각 버튼의 배경색과 호버 색상이 자동으로 생성되며, :hover 스타일은 중첩을 사용하여 함께 정의됩니다.
반복문을 사용할 때 주의할 점
반복문을 사용할 때 아래의 사항을 유념하여 더 효율적이고 읽기 쉬운 코드를 작성하세요.
-
너무 깊은 중첩을 피하세요 과도한 중첩은 가독성을 떨어뜨리므로 최소한으로만 사용하세요.
-
성능에 영향이 있는지 고려하세요 반복문으로 너무 많은 클래스가 생성되면, CSS 파일이 불필요하게 커질 수 있습니다.
-
적절한 변수명을 사용하세요
$i,$item과 같은 변수는 코드의 의미를 쉽게 알 수 있도록 명확한 이름을 사용하세요.
요약
SASS에서 반복문을 활용하면 효율적이고 유지보수하기 쉬운 스타일을 설계할 수 있습니다. 특히, @for, @each, @while을 상황에 맞게 선택하면 동적이고 유연한 CSS를 생성할 수 있습니다.
위의 기사를 보면서 Visual Studio Code를 사용해 우리 유튜브 채널에서 함께 따라할 수 있습니다. 유튜브 채널도 확인해 주세요.