#1 SCSS
#1-1 WhatใWhy
SASS
Sass: Syntactically Awesome Style Sheets
Sass is the most mature, stable, and powerful professional grade CSS extension language in the world.
sass-lang.com
CSS๋ ๋ฌธ๋ฒ์ด ๊ฐ๊ฒฐํด์ ์ข์ง๋ง, ์ ์ฐํจ์ด ๋ถ์กฑํ๊ธฐ์ ์ฝ๋๊ฐ ๊ธธ์ด์ง์๋ก ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง๋ค. ์ด ๋จ์ (์ ์ฐํจ)์ ๊ทน๋ณตํ๊ธฐ ์ํ ์ ์ฒ๋ฆฌ๊ธฐ๋ก์ SASS๊ฐ ๊ฐ๋ฐ๋์๋ค.
SCSS
SCSS๋ Sassy CSS๋ผ๋ ๋ป์ผ๋ก, CSS์์ ์ต์ํ ์ฌ์ฉํ๋ ์ค๊ดํธ๋ ๊ฐ์ข ๋ฌธ๋ฒ์ ์ฌ์ฉํ SASS๋ค. ์๋์์ SCSS์ ๋ฌธ๋ฒ์ ์๊ฐํ ๊ฒ์ธ๋ฐ, ์๋ CSS๋ฅผ ์๊ณ ์๋ ์ฌ๋์ด๋ผ๋ฉด ๋ฐ๋ก ์ตํ ์ ์์ ๊ฒ์ด๋ค.
#1-2 How
Sass: Sass Basics
CSS on its own can be fun, but stylesheets are getting larger, more complex, and harder to maintain. This is where a preprocessor can help. Sass has features that don’t exist in CSS yet like nesting, mixins, inheritance, and other nifty goodies that help
sass-lang.com
๊ณต์ ๊ฐ์ด๋๋ค. ์์ด๋ก ๋ ํ์ด์ง์ง๋ง ๊ด์ฐฎ๋ค. ์คํฌ๋กค์ ๋ด๋ ค๊ฐ๋ฉด์ ์ฝ๋๋ง ๋ณด๋ฉด ๋๋ค. CSS ์ฝ๋๊ฐ SCSS๋ก๋ ์ด๋ป๊ฒ ์์ ๋๋์ง๋ง ๋ณด์. ๋ณด๋ ๊ฒ๊ณผ ๋์์ใ์ค์๊ฐ์ผ๋ก SCSS๋ฅผ ์ตํ๊ฒ ๋ ๊ฒ์ด๊ณ , ๋ง์ง๋ง ์ฝ๋๊น์ง ๋ณด๊ณ ๋๋ฉด ๋ฌธ๋ฒ์ ํตํ๋ค๊ณ ๋ณผ ์ ์๋ค.
#2 ์ฌ์ฉ ๋ ธํ์ฐ
#2-1 ์ฌ์ด ๊ณ์ธตํ์ ํจ์
ํด๋์ค ๋ณ ์์ฑ์ ๋์ดํ ํ

<li> (HTML element)๊ฐ ์ง๋ ์ผ ํ๋ 5๊ฐ์ ํด๋์ค์ ํด๋์ค๋ค์ ์์ฑ๋ค์ ๋์ดํ ํ๋ค. ์ฌ๊ธฐ์ ๊ธฐ๋ฐํ์ฌ, ์๋์ SCSS ์ฝ๋๋ฅผ ์ง๋ณด์๋ค.
์ฝ๋ 1
li {
&.a {
width: 300px;
top: 70px;
color: $my-color-1;
}
&.b {
width: 500px;
top: 70px;
color: $my-color-1;
}
&.c {
width: 300px;
top: 70px;
color: $my-color-2;
}
&.d {
width: 500px;
top: 20px;
color: $my-color-2;
}
&.e {
width: 300px;
top: 20px;
color: $my-color-3;
}
}
SCSS์ ์ฌ์ด ๊ณ์ธตํ์ ์ ์ด ๋์(?) ๋ง SCSS๋ฅผ ์ ๋ค ๋ณด๋ฉด ์ด๋ฐ ์ฝ๋๋ฅผ ์ฐ๊ธฐ ์ญ์์ด๋ค. ๊ฒ๋ค๊ฐ ๋ญ๊ฐ ๊น๋ํด ๋ณด์ด์ง ์๋๊ฐ? ํ์ง๋ง ์ ์ง๋ณด์๋ฅผ ์ํด ์ฝ๋๋ฅผ ์์ ํด์ผ ํ ์ผ์ด ์๊ธฐ๋ฉด ๊ณจ์น๊ฐ ์ํ์ง๋ค.
์ฝ๋ 2
li {
// ํฌ๊ธฐ (width ๋ฑ)
&.a, &.c, &.e { width: 300px; }
&.b, &.d { width: 500px; }
// ์์น (top ๋ฑ)
&.a, &.b, &.c { top: 70px; }
&.d, &.e { top: 20px; }
// ๋ชจ์ (color ๋ฑ)
&.a, &.b { color: $my-color-1; }
&.c, &.d { color: $my-color-2; }
&.e { color: $my-color-3; }
}
๋ฐ๋ฉด 2๋ฒ์งธ ์ฝ๋์ ๊ฐ์ ์คํ์ผ์ ์ด๋จ๊น? ์ด ์ฝ๋๋ li๊ฐ ๋ณํ๋ ๊ธฐ์ค์ ์ ์ค์ฌ์ผ๋ก ์ง ์ฝ๋๋ค. ์ด ์คํ์ผ์ SRP ์์น๊ณผ๋ ๋ง๋ฟ๋๋ค. SCSS์๋ ํด๋์ค๊ฐ ์์ง๋ง, ๊ทธ ๋์ ํ๋์ ์ฝ๋ ๋ญ์น๋ฅผ ํด๋์ค์ฒ๋ผ ์๊ฐํ๋ ๊ฒ์ด๋ค (2๋ฒ์งธ ์ฝ๋์์ li๋ ์ด 3๊ฐ์ ์ฝ๋๋ญ์น๋ฅผ ์ง๋). ์๋ฅผ ๋ค์ด li์ ์์น๋ฅผ ์์ ํด์ผ ํ๋ฉด, 2๋ฒ์งธ ์ฝ๋ ๋ญ์น๋ง ์์ ํ๋ฉด ๋์ด๋ค. ์ฒซ ๋ฒ์งธ ์ฝ๋์๋ ๋น๊ต๊ฐ ์ค๋ก์ธ ์์ค์ ์์ ๋์ด๋๋ค.
#2-2 2๊ฐ์ง ์ฃผ์
// (SASS ์ ์ฉ ์ฃผ์ ์คํ์ผ) ๋ณํ๋ CSS์์๋ ๋ณด์ด์ง ์์ ์ ๋ณด↓
@mixin theme($theme: DarkGray) {
background: $theme;
box-shadow: 0 0 1px rgba($theme, .25);
color: #fff;
}
/* (์๋ ์ฃผ์ ์คํ์ผ) ๋ณํ๋ CSS์์๋ ๋ณด์ผ ์ ๋ณด ↓*/
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
}
li { display: inline-block; }
}
SCSS์์๋ CSS์์ ์ฌ์ฉํ ์ ์์๋ // ์ฃผ์๋ ์ฌ์ฉํ ์ ์๋ค. CSS์์๋ ์ฌ์ฉ ๋ถ๊ฐํ๊ธฐ์, CSS๋ก ๋ณํ ์์ // ์ฃผ์์ ์ฌ๋ผ์ง๋ค. ๋ฐ๋ผ์ // ์ฃผ์์ SCSS๋ง์ ์ฝ๋๋ฅผ ์ค๋ช ํ ๋ ์ฌ์ฉํ๋ฉด ๋๋ค. ๋ฐ๋ฉด, CSS ๋ณํ ํ์๋ ๋ณด์ผ ๋ถ๋ถ์ ์๋ CSS์ ์ฃผ์์ธ /**/ ์ฃผ์์ ์ฐ์. ์ผ๋จ ํ ๋ฒ SCSS๋ฅผ ์ฐ๊ธฐ ์์ํ๋ฉด, CSS๋ (์ง์ ์์ ํ๋ ์ผ ์์ด) '์ถ๋ ฅ๋ฌผ ํ์ผ'๋ก์๋ง ์ทจ๊ธํ๊ฒ ๋๋ค. ๊ทธ๋ผ์๋ ์์ผ์ ๋ชจ๋ฅด๋ ๋ฒ์ด๋ค. CSS ์ฝ๋๋ฅผ ์ง์ ๋ณด๊ฒ ๋ ์ ์ฌ์ ์ธ ๋ฏธ๋๋ฅผ ์ํด /**/ ์ฃผ์๋ ์ฐ์๋ ๊ฒ์ด๋ค.
#3 SCSS → CSS ๋ณํ
#3-1 ์ปดํ์ผ๋ฌ ์ค์น ๋ฐ ๋ณํ
๋ค์ด๋ก๋
๋จผ์ ๊ณต์ ๋ค์ด๋ก๋ ํ์ด์ง์์, CLI ํ๋ก๊ทธ๋จ์ ํํ์ธ SASS ์ปดํ์ผ๋ฌ๋ฅผ ๋ค์ด๋ก๋ํ๋ค.
์ค์น
๋ค์ด๋ก๋ ํ ์์ถ์ ํ๋ฉด ๋์ค๋ ํด๋์ ๊ฒฝ๋ก๋ฅผ Path(in ์์คํ ๋ณ์)์ ์ ์ฅํ๋ค. ์ ์ฅ ํ, ์ฌ๋ถํ ํ๋ค. ์ฌ๋ถํ ํ CMD ์ฐฝ์ ์ผ์,
sass --version
์ ์ ๋ ฅํ์ ๋ ๋ฒ์ ๊ฐ์ด ์ถ๋ ฅ๋๋ค๋ฉด ์ฑ๊ณต์ด๋ค.
๋ณํ
1. ๋ณํํ scss ํ์ผ์ด ์๋ ๋๋ ํ ๋ฆฌ์์ ๋น ๊ณต๊ฐ ์ฐํด๋ฆญ - [ํฐ๋ฏธ๋์์ ์ด๊ธฐ]
2. "sass example.scss example.css" ์ ๋ ฅ
#3-2 ์๋ ๋ณํ ๋๊ตฌ
#3-1์ ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ์๋๋๋ฉด ์ฐธ ์ข์ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์๊ฐ์ ์ฐ๋ฆฌ๋ง ํ ๋ฆฌ๊ฐ ์๋ค. ์ฌ๋ฌ IDE์์๋ SASS ๊ณ์ด ํ์ผ์ CSS๋ก ์๋ ๋ณํํด์ฃผ๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ค. ๋ด๊ฐ ์ฌ์ฉํ IDE๋ JetBrains์ฌ์ WebStorm์ด๋ค.
#3-3 Watcher ์ค์ ๋ฒ
WebStorm์์
[File (ํ์ผ)] - [Settings (์ค์ )] - [Tools (๋๊ตฌ)] - [File Watchers (ํ์ผ ๊ฐ์๊ธฐ)] - [+] - [SCSS]
๋ก ๋ค์ด๊ฐ๋ฉด, ์๋์ ๊ฐ์ ์ฐฝ์ด ๋ฌ๋ค.

์ฌ๋งํ ์ํฉ์์๋ ์์ ๋๊ฐ์ด ํ๋ฉด ๋๋ค. ์ถ๊ฐ ์ค๋ช ์ด ํ์ํ ๊ฒฝ์ฐ, ์ผ์ชฝ ์๋์ ์๋ [?] ๋ฒํผ์ ๋๋ฅด๋ฉด ๋๋ค (2025.02 ๋ฒ์ ์ WebStorm์์ [?] ๋ฒํผ์ ๋๋ฅผ ์ ๋จ๋ ํ์ด์ง). LLM์ ๋ต๋ณ์ ๋น ๋ฅด๊ฒ ๋ฐ์๋ณผ ์ ์๋ ํ๊ฒฝ์ด๋ผ๋ฉด ๊ทธ๋ฅ ์คํฌ๋ฆฐ์ท์ ํต์งธ๋ก ์ฌ๋ฆฌ๊ณ ์ค๋ช ํด๋ฌ๋ผ๊ณ ํด๋ ์ข๋ค.
#3-4 ๊ฒฐ๊ณผ ์์

์ด์ SCSS ํ์ผ์์ ํ ๋จ ๊ธ์๋ง ์์ ํด๋, CSS ์ถ๋ ฅ ํ์ผ์ด ์ค์๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ๋๋ค.
'๊นจ์ ๊ฐ๋ ๐ > ๊ธฐํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์ปดํ์ผ ๊ด๋ จ ์ฉ์ด ์ ๋ฆฌ (0) | 2026.01.06 |
|---|---|
| [Gradle] Type-safe Project Accessors ๋์ ๋ฐฐ๊ฒฝ ๋ฐ ์ฌ์ฉ๋ฒ (0) | 2025.12.30 |
| ์์กด์ฑ ๊ทธ๋ํ(Dependency graph), ๋ฐ์ดํฐ ํ๋ฆ๋(Data-flow diagram) (0) | 2025.12.11 |
| SOLID ์์น (0) | 2025.12.01 |
| Gradle, ๋ฒ์ ์นดํ๋ก๊ทธ (0) | 2025.11.26 |