๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CSS

CSS : SCSS ์•Œ์•„๋ณด๊ธฐ

by ์ฝ”ํŒŒ์นด 2022. 8. 18.
728x90

CSS : SCSS ์•Œ์•„๋ณด๊ธฐ

CSS๋Š” ๋น„๊ต์  ๋ฐฐ์šฐ๊ธฐ ์‰ฌ์šด ํŽธ์ด์ง€๋งŒ, ๋ถˆํŽธํ•œ ์ ์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก, ๋ถˆํ•„์š”ํ•œ ์„ ํƒ์ž์˜ ๊ณผ์šฉ, ์—ฐ์‚ฐ ๊ธฐ๋Šฅ์˜ ํ•œ๊ณ„, ๊ตฌ๋ฌธ์˜ ๋ถ€์žฌ ๋“ฑ ๋ถˆํŽธ์„ ๋Š๋‚„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ๋ถˆํŽธ์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด, ์šฐ๋ฆฌ๋Š” CSS Preprocessor๋ผ๊ณ  ๋ถˆ๋ฆฌ์šฐ๋Š” Sass, Less, SCSS ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๊ทธ ์ค‘, SCSS์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


SCSS๋ž€?

CSS๋Š” HTML ํƒœ๊ทธ๋ฅผ ๊พธ๋ฏธ๊ฑฐ๋‚˜ ํšจ๊ณผ๋ฅผ ๋„ฃ์–ด ์ฃผ๋Š” ๋“ฑ ๋””์ž์ธ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋ฉด CSS๋Š” ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๋“ฑ ์œ ์ง€๋ณด์ˆ˜์˜ ์–ด๋ ค์›€์„ ์ฃผ๋Š” ์š”์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์žฌํ™œ์šฉ์„ฑ์„ ์˜ฌ๋ฆฌ๊ณ , ๊ฐ€๋…์„ฑ์„ ์˜ฌ๋ฆฌ๋Š” ๋“ฑ CSS์—์„œ ๋ณด์ด๋˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ณ , ๊ฐœ๋ฐœ์˜ ํšจ์œจ์„ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ SCSS์ž…๋‹ˆ๋‹ค.

SCSS์˜ ๊ธฐ๋Šฅ

1. ๋ณ€์ˆ˜ ๊ธฐ๋Šฅ

๋ณ€์ˆ˜๋ฅผ ์Šคํƒ€์ผ์‹œํŠธ ์ „์ฒด์—์„œ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ธ€๊ผด ์Šคํƒ ๋˜๋Š” ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ CSS ๊ฐ’๊ณผ ๊ฐ™์€ ํ•ญ๋ชฉ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Sass๋Š” $ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณ€์ˆ˜๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

body {
    font: 100% Helvetica, sans-serif;
    color: #333;
}

์œ„ CSS ์ฝ”๋“œ๋ฅผ SCSS์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$font-stack: Helvetica, sans-serif;
$primary-color: #333;

body {
    font: 100% $font-stack;
    color: $primary-color;
}

2. ์ค‘์ฒฉ ๊ธฐ๋Šฅ

HTML์—์„œ๋Š” ์ค‘์ฒฉ๋˜๊ณ  ์‹œ๊ฐ์ ์ธ ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ์žˆ์ง€๋งŒ, CSS๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. SCSS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด HTML์˜ ๋™์ผํ•œ ์‹œ๊ฐ์  ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅด๋Š” ๋ฐฉ์‹์œผ๋กœ CSS ์š”์†Œ๋“ค์„ ์ค‘์ฒฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๋‚˜์น˜๊ฒŒ ์ค‘์ฒฉ๋œ ๊ทœ์น™์€ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์šฐ๋ฏ€๋กœ, ๊ณผ๋„ํ•˜๊ฒŒ ์š”์†Œ๋“ค์„ ์ค‘์ฒฉํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

nav ul {
    margin: 0;
    padding: 0;
    list-style: none;
}
nav li {
    display: inline-block;
}
nav a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
}

์œ„ CSS ์ฝ”๋“œ๋ฅผ SCSS์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

nav {
    ul {
        margin: 0;
        padding: 0;
        list-style: none;
    }
 
    li { display: inline-block; }
 
    a {
        display: block;
        padding: 6px 12px;
        text-decoration: none;
    }
}

ul, li, a ๊ฐ๊ฐ์˜ ์š”์†Œ๋“ค์ด nav ์š”์†Œ ๋‚ด๋ถ€์— ์ค‘์ฒฉ๋˜์–ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

728x90

๋Œ“๊ธ€

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๐Ÿฆ™

CSS
๊ด‘๊ณ  ์ค€๋น„์ค‘