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

[CSS] SCSS ์–ธ์–ด๋ž€?

by _ํ† ๋งคํ†  2022. 8. 19.
728x90

CSS : SCSS

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” CSS ์–ธ์–ด ์ค‘ ํ•˜๋‚˜์ธ SCSS์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!๐Ÿ˜„


#1. SCSS๋ž€?

์ฝ”๋”ฉ์ด ๋ณต์žกํ•ด์ง€๊ฒŒ ๋˜๋ฉด ์ฝ”๋“œ์˜ ์ค‘๋ณต ๋ฐ ์˜ค๋ฅ˜ ๋“ฑ์˜ ์ด์œ ๋กœ CSS๋Š” ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์ง€๊ณ  ๊ฐ€๋…์„ฑ ๋˜ํ•œ ๋–จ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ CSS์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ณ ์ž ๋“ฑ์žฅํ•œ ๋ฌธ๋ฒ•์ด SCSS๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. SCSS๋Š” Syntactically Awesome StyleSheet์˜ ์•ฝ์–ด๋กœ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ , ๊ฐ€๋…์„ฑ์„ ์ฆ๊ฐ€์‹œ์ผœ ๊ฐœ๋ฐœ์˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•œ ์ „์ฒ˜๋ฆฌ๊ธฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
!! ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์ ์€ SCSS์–ธ์–ด๋กœ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Scss๋กœ ์ž‘์—… ํ›„ CSS์–ธ์–ด๋กœ ์ปดํŒŒ์ผํ•˜์—ฌ ์›น์— ๊ตฌํ˜„์‹œํ‚ค๋Š” ์›๋ฆฌ๋ผ๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค! ์ฆ‰ CSS์˜ ๋Œ€์ฒด ์–ธ์–ด๊ฐ€ ์•„๋‹Œ ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ CSS ์ฝ”๋“œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์˜ ๊ฐœ๋…์ด๋ผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค๐Ÿ˜€


1-1 SCSS์™€ ๋ณ€์ˆ˜

SCSS์—์„œ๋Š” ์—ฌ๋Ÿฌ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ๋“ค์ด ์žˆ๋Š”๋ฐ ๊ทธ ์ค‘ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์—ฌ ์†์„ฑ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๋Š” SCSS์˜ ์žฅ์  ์ค‘ ํ•˜๋‚˜์ธ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

! ๋ณ€์ˆ˜ ($) ์‚ฌ์šฉ๋ฒ• !
$๋ณ€์ˆ˜๋ช…: ์†์„ฑ๊ฐ’;
SCSS์—์„œ $๋Š” ๋ณ€์ˆ˜๋ฅผ ๋œปํ•˜๋Š” ๊ธฐํ˜ธ ์ž…๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์†์„ฑ์€ ๋ณ€์ˆ˜($)๋กœ ์†์„ฑ ๊ฐ’์„ ์ง€์ •ํ•ด์ฃผ์–ด ์žฌ์‚ฌ์šฉ์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ๏ธ SCSS

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

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

CSS ์ปดํŒŒ์ผ ver.

โœ๏ธ CSS

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

1-2. SCSS์™€ ๋„ค์ŠคํŒ…(์ค‘์ฒฉ) ๊ธฐ๋ฒ•

๋„ค์ŠคํŒ… ๊ธฐ๋ฒ•์€ SCSS์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์„ ํƒ์ž ๋ฐ ์†์„ฑ์„ ์ค‘์ฒฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ƒ์œ„ ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
ํŠนํžˆ HTML ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•  ์ˆ˜๋ก ์ถฉ๋Œ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด CSS์—์„œ๋Š” ์ˆ˜๋งŽ์€ ์„ ํƒ์ž๋“ค์„ ํƒœ๊ทธ๋งˆ๋‹ค ์„ ์–ธํ•ด์ค๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ๊ต‰์žฅํžˆ ๋ฒˆ๊ฑฐ๋กญ๊ธฐ ๋งˆ๋ จ์ด์ฃ .
SCSS์˜ ๋„ค์ŠคํŒ… ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ ์„ ํƒ์ž ์ค‘์ฒฉ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง€๊ณ , ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•ด์ง€๋ฉฐ ๋” ๋‚˜์•„๊ฐ€ HTML์˜ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๋„ ๋†’์•„์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

! ๋„ค์ŠคํŒ… ๊ธฐ๋ฒ•๊ณผ & ๊ธฐํ˜ธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ• !
& = ๋ถ€๋ชจ ์„ ํƒ์ž
&:๊ฐ€์ƒ ์š”์†Œ(or ๊ฐ€์ƒ ํด๋ž˜์Šค) {};

๐Ÿ’ก ๊ทธ๋Ÿผ ๋‹ค์Œ์˜ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ๋„ค์ŠคํŒ… ๊ธฐ๋ฒ•์„ ์ดํ•ดํ•ด๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค!

โœ๏ธ SCSS ์ค‘์ฒฉ01

nav {
  ul {
    margin: 0;
    padding: 0;
    list-style: none;
  }

  li { display: inline-block; }

  a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
  }
}

๐Ÿ’ก ์œ„์˜ SCSS์ฝ”๋“œ๋ฅผ CSS ์–ธ์–ด๋กœ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค!

โœ๏ธ 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;
}

! ์„ค๋ช… !
์œ„ ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด nav๊ฐ€ ๋ถ€๋ชจ ์š”์†Œ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์ฃ ?!
CSS๋Š” ๋ชจ๋“  ์ž์‹์š”์†Œ์— ๋ถ€๋ชจ์š”์†Œ ์„ ํƒ์ž๋ฅผ ๋ถ™์—ฌ์„œ ์ž‘์—…ํ•ด์•ผ ํ•˜์ง€๋งŒ SCSS์—์„œ๋Š” ๋ถ€๋ชจ ์š”์†Œ์˜ {}์— ๋ถ€๋ชจ ์š”์†Œ์—†์ด ์ž์‹ ์š”์†Œ๋งŒ ์„ ์–ธํ•˜์—ฌ ์ž‘์—… ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋Œ€์‹  ์ฃผ์˜ํ•  ์ ์€ SCSS์—์„œ๋Š” ๋ถ€๋ชจ - ์ž์‹ ๊ด€๊ณ„๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ผ์ธ ์ •๋ ฌ์ด ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ผญ ํ™•์ธํ•ด๊ฐ€๋ฉฐ ์‚ฌ์šฉํ•ด์ค๋‹ˆ๋‹ค.

โœ๏ธ SCSS ์ค‘์ฒฉ02

label {
  padding: 3% 0px;
  width: 100%;
  cursor: pointer;
  color: $colorPoint;

  &:hover {
    color: white;
    background-color: $color;
  }

  &:before {
    content: '';
  }
}

๐Ÿ’ก ์œ„์˜ SCSS์ฝ”๋“œ๋ฅผ CSS ์–ธ์–ด๋กœ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค!

โœ๏ธ CSS ์ปดํŒŒ์ผ

label {
  padding: 3% 0px;
  width: 100%;
  cursor: pointer;
  color: $colorPoint;
}

label:hover {
  color: white;
  background-color: $color8;
} 

label::before {
  content: '';
}

! ์„ค๋ช… !
์œ„ ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด ์ž์‹ ์š”์†Œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ :hover์™€ ::before๊ฐ™์€ ๊ฐ€์ƒํด๋ž˜์Šค์™€ ๊ฐ€์ƒ์š”์†Œ๋„ &(=๋ถ€๋ชจ ์„ ํƒ์ž)๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ์–ธํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
&๋ฅผ ์ด์šฉํ•œ ์ค‘์ฒฉ๋„ ์œ„์˜ ์ค‘์ฒฉ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•ด๋‹น ๋ถ€๋ชจ ์š”์†Œ์˜ {}์•ˆ์— ๋ผ์ธ์„ ์ž˜ ๋งž์ถฐ์„œ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


์ด์ฒ˜๋Ÿผ ๋„ค์ŠคํŒ… ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•  ๋• ๊ฐ ํƒœ๊ทธ ๊ฐ„ ๊ด€๊ณ„๋ฅผ ์ž˜ ์ดํ•ดํ•˜์—ฌ ์ค‘์ฒฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋ฉฐ ์ค‘์ฒฉ์„ ๋„ˆ๋ฌด ๋‚จ๋ฐœํ•˜๋ฉด ํ‘œ์ค€์„ฑ์— ์–ด๊ธ‹๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” SCSS๋ฅผ ์‚ฌ์šฉํ•œ ๐Ÿถ ์›€์ง์ด๋Š” ๊ฐ•์•„์ง€ ์ผ๋Ÿฌ์ŠคํŠธ ๐Ÿถ๋ฅผ ์‹ค์Šตํ•ด๋ณด๊ฒ ์Šต๋‚˜๋‹ค. ๊ณ ์ƒ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค๐Ÿคฉ

728x90

๋Œ“๊ธ€


Lucky Charms Rainbow
js
html
css