본문 바로가기

달밤에 코딩하기/Sass & SCSS

#24 - 반복문 (@each)

@each

list data와 Map data를 반복할 때 사용한다.

 

#list / Map Data 설명 보기

#3 - Sass & SCSS 주석과 데이터의 종류

 

#3 - Sass & SCSS 주석과 데이터의 종류

주석 ( Comment ) Sass와 SCSS는 주석 사용법에서 차이가 있다. Sass 주석 /* 각 줄에 별표를 붙여야 하며 * 별의 라인을 맞춰주어야 * 정상 동작 합니다. */ SCSS 주석 //해당 주석은 컴파일 되지 않습니다.

rosakim90.tistory.com

 

List Data와 @each

SCSS 기본 구조

@each $변수 in 데이터{
    /* 반복 내용 */
}

 

SCSS

$color-list : red, orange, yellow, green;

.class{
    @each $color in $color-list{
        li.#{$color} {
            background : url("./img/#{$color}.png");
        }
    }
}

Compile 된 CSS

.class{
    li.red {
        background : url("./img/red.png");
    }
    li.orange {
        background : url("./img/orange.png");
    }
    li.yellow {
        background : url("./img/green.png");
    }
    li.green {
        background : url("./img/green.png");
    }
}

 

SCSS 기본 구조

@each $키변수이름, $값변수이름 in 데이터{
    /* 반복 내용 */
}

SCSS

index()는 map-data에서는 처리가 불가능해서 아래 내장함수를 이용하여 list-data로 변환해서 사용해야 한다.

  1. map-keys($데이터이름) : 맵데이터의 키를 리스트화
  2. map-values($데이터이름) : 맵 데이터의 값을 리스트화

 

$color-data : (
    red : apple,
    orange : orange, 
    yellow : banana, 
    green : grape
);
/* $color-data에서 키는 $colors, 값은 $fruits로 이름을 지정  */
@each $colors, $fruits in $color-data{
    /* $color-data-index = 맵 데이터의 키($colors)를 리스트화 */
    $color-data-index : map-keys($color-data);
    /* $color-data-index에서 해당되는 컬러가 몇번째 인지 숫자를 구함 */
    $index : index($color-data-index, $colors);
    .li-#{$colors} {
        width : 10px * $index;
        background : url("./img/#{$fruits}.png");
    }
}

Compile 된 CSS

li-red {
    width : 10px;
    background : url("./img/apple.png");
}
li-orange {
    width : 20px;
    background : url("./img/orange.png");
}
li-yellow {
    width : 30px;
    background : url("./img/banana.png");
}
li-green {
    width : 40px;
    background : url("./img/grape.png");
}

 

 

'달밤에 코딩하기 > Sass & SCSS' 카테고리의 다른 글

#25 - 반복문 (@while)  (0) 2021.06.28
#23 - 반복문 (@for)  (0) 2021.06.28
#22 - 조건문 - @if / @function / @mixin 활용  (0) 2021.06.11
#21 - 조건문 (@if)  (0) 2021.06.11
#20 - 조건문(if)  (0) 2021.06.11