Notice
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 아이콘사용법
- owlcarousel
- Git clone
- npm start
- slickslider
- legacy-peer
- npm install
- MediaQuery
- node설치
- 정적객체
- googleicon
- package.json
- XEIcon
- git lab clone
- 플러그인
- 단어단위로떨어지기
- fontawesome
- minwidth
- maxwidth
- 글자들여쓰기
- 동적객체
- 이미지반응형
- node 오류
- vscode git clone
- 의존성문제
- 그누보드반응형
- npm install 문제
- react npm install
- 웹아이콘
- window 정책변경
Archives
- Today
- Total
어쩌다 알게 된 ƪ(•̃͡•̃͡ ƪ
Sass에서 반복문(@for)과 변수로 클래스/스타일 중복 제거하기 본문
728x90
🔖 기본 sass 방법
=> 중복으로 써야해서 코드가 길어짐
button{
.&btn_time0{background-image:url(../../assets/img/btn_time0.png);}
.&btn_time1{background-image:url(../../assets/img/btn_time1.png);}
.&btn_time2{background-image:url(../../assets/img/btn_time2.png);}
.&btn_time3{background-image:url(../../assets/img/btn_time3.png);}
}
🔖 중복을 줄이기 위해 반복문(@for) 사용
@for $i from 0 through 3{
&.btn_time#{$i}{
background-image:url('../../assets/img/btns/btn_time#{$i}.png');
}
}
=> 이렇게 하려면 이미지 명이 명확하지 않아서(이미지 명으로만 무슨 아이콘인지 추측 불가) 밑에 방법으로!
🔖 반복문(@for)과 변수 사용
$btn_time_img_name:('../../assets/img/btns/btn_all_day.png', '../../assets/img/btns/btn_am_half.png', '../../assets/img/btns/btn_pm_half.png', '../../assets/img/btns/btn_direct.png');
근데 또 이름만 변수로 하기엔 같은 경로가 반복됨
이것도 줄이고 싶음!!
button{
$btn_time_img_path:'../../assets/img/btns/';
$btn_time_img_name:('btn_all_day.png', 'btn_am_half.png', 'btn_pm_half', 'btn_direct.png');
@for $i from 0 through 3{
&.btn_time#{$i}{
background-image:url('#{$btn_time_img_path}#{nth($btn_time_img_name, $i)}');
}
}
}

에러뜸!! 왤까!!!❓🤔
Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
SassError: $n: List index may not be 0.
=> nth() 를 사용하는데 지금 i는 0부터 시작해서 nth(0)이 없으니 nth(1)부터 시작해야함
🔖 최종 코드
button{
$btn_time_img_path:'../../assets/img/btns/';
$btn_time_img_name:('btn_all_day.png', 'btn_am_half.png', 'btn_pm_half', 'btn_direct.png');
@for $i from 0 through 3{
&.btn_time#{$i}{
background-image:url('#{$btn_time_img_path}#{nth($btn_time_img_name, $i + 1)}');
}
}
}
background-image:url('#{$btn_time_img_path}#{nth($btn_time_img_name, $i + 1)}');
완성..!!!!
728x90
'CSS > SCSS' 카테고리의 다른 글
| [SCSS] @import 'ConfigFile';는 _ConfigFile.scss 가 불러와진다? (0) | 2025.03.29 |
|---|---|
| [SCSS] @use 'sass:map'; (1) | 2025.03.28 |
| [SCSS] SCSS란? (0) | 2025.03.28 |
Comments