๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

Syntax-04-import

Sass(SCSS) Syntax - 4. ๊ฐ€์ ธ์˜ค๊ธฐ( @import )#

โ—๏ธ ํ•ด๋‹น ๊ธ€์€ ํŒจ์ŠคํŠธ์บ ํผ์Šค - ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ๊ฐ•์˜์—์„œ HTML & CSS, SASS(SCSS) Part์˜ ๋ฐ•์˜์›… ๊ฐ•์‚ฌ๋‹˜์˜ ๊ฐ•์˜์ž๋ฃŒ(Sass(SCSS) ์™„์ „ ์ •๋ณต!)๋ฅผ ๋ณด๋ฉฐ ์ •๋ฆฌํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ€์ ธ์˜ค๊ธฐ( @import )#

CSS์—์„œ @import ๋กœ ์™ธ๋ถ€ CSS๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ฒ˜๋Ÿผ Sass์—์„œ๋„ @import ๋ฅผ ์‚ฌ์šฉํ•ด์„œ์—ฌ๋Ÿฌ SassํŒŒ์ผ๋“ค์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ, CSS์™€ ๋ฌธ๋ฒ•์ด๋‚˜ ์ž‘๋™๋ฐฉ์‹์ด ๋‹ค๋ฅด๋‹ค.

CSS์™€ ๋‹ค๋ฅธ ์ ์€, Sass๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์™ธ๋ถ€์˜ Sass(๋˜๋Š” SCSS) ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์™€ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํ˜„์žฌ ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฐœ๋…์ด๊ณ , CSS์˜ @import ๋Š” ๋‹ค๋ฅธ CSS ํŒŒ์ผ์˜ ๋กœ๋”ฉ์„ http์— ์š”์ฒญํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

๋”ฐ๋ผ์„œ Sass์—์„œ @import ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ์ข…์ ์œผ๋กœ ํ•˜๋‚˜์˜ CSS๋กœ ์ปดํŒŒ์ผํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ์š”์ฒญ์„ ๋ณด๋‚ผ ํ•„์š”๊ฐ€ ์—†์–ด์„œ ์„ฑ๋Šฅ์ ์œผ๋กœ๋„ ์ข‹๋‹ค. ๋˜ํ•œ ๊ฐ€์ ธ์˜จ ํŒŒ์ผ์— ์ •์˜๋œ ๋ชจ๋“  ๋ณ€์ˆ˜ ๋˜๋Š” Mixins ๋“ฑ์„ ์ฃผ ํŒŒ์ผ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์œ ์šฉํ•˜๋‹ค.

๐Ÿ”— CSS - Overview - @import ๋ฐฉ์‹ ์ฐธ์กฐ

Sass๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Sass(๋˜๋Š” SCSS) ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค์ง€๋งŒ, ๋ช‡ ๊ฐ€์ง€ ๊ฒฝ์šฐ์—๋Š” CSS @import ๋ฌธ๋ฒ•์œผ๋กœ ๋ณ€ํ™˜๋˜๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.

  • ํŒŒ์ผ ํ™•์žฅ์ž๊ฐ€ .css ์ผ ๋•Œ

  • ํŒŒ์ผ ์ด๋ฆ„์ด http:// ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ

  • url() ์ด ๋ถ™์—ˆ์„ ๊ฒฝ์šฐ

  • ๋ฏธ๋””์–ด์ฟผ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ

@import "hello.css";@import "http://hello.com/hello";@import url(hello);@import "hello" screen;

์—ฌ๋Ÿฌ ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ#

ํ•˜๋‚˜์˜ @import ๋กœ ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค.

ํŒŒ์ผ ์ด๋ฆ„์€ , ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

@import "header", "footer";

โ˜๏ธ ํ™•์žฅ์ž ์—†์ด ํŒŒ์ผ ์ด๋ฆ„๋งŒ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํ•˜๋ฉด, ํŒŒ์ผ๋ช….scss , ํŒŒ์ผ๋ช….sass , ํŒŒ์ผ๋ช….scss , ํŒŒ์ผ๋ช….sass ์ด ์žˆ๋Š”์ง€ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ฐ€์ ธ์˜จ๋‹ค. ์—ฌ๋Ÿฌ ํŒŒ์ผ์ด ์กด์žฌํ•˜๋ฉด์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

ํŒŒ์ผ ๋ถ„ํ• (Partials)#

ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋ฉด ํŒŒ์ผ๋“ค์„ header.scss , side-menu.scss โ€ฆ ์ฒ˜๋Ÿผ ๊ฐ ๊ธฐ๋Šฅ๊ณผ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฝ๋„๋ก ๊ด€๋ฆฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ํŒŒ์ผ์ด ๋งŽ์•„์ง€๊ณ ์ปดํŒŒ์ผ์‹œ ๊ฐ๊ฐ์˜ ~.css ํŒŒ์ผ๋กœ ์ €์žฅ๋œ๋‹ค๋ฉด ๊ด€๋ฆฌ๋‚˜ ์„ฑ๋Šฅ ์ฐจ์›์—์„œ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค .

์ด๋ฅผ ์œ„ํ•ด Sass์—์„œ๋Š” ํŒŒ์ผ ๋ถ„ํ• (Partials) ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค.

ํŒŒ์ผ ์ด๋ฆ„ ์•ž์— _ ๋ฅผ ๋ถ™์—ฌ( _header.scss ์ฒ˜๋Ÿผ) @import ๋กœ ๊ฐ€์ ธ์˜ค๋ฉด ์ปดํŒŒ์ผ ์‹œ ~.css ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š๋Š”๋‹ค.

์˜ˆ์ œ#

๋งŒ์•ฝ ํŒŒ์ผ ๊ตฌ์กฐ๊ฐ€ ์ด๋Ÿฌํ•  ๋•Œ,

Sass-App# ...โ”œโ”€scssโ”‚  โ”œโ”€header.scssโ”‚  โ”œโ”€side-menu.scssโ”‚  โ””โ”€main.scss# ...

main.scss ๋กœ ๋‹ค๋ฅธ ํŒŒ์ผ๋“ค์„ @import ํ•˜๊ณ 

// main.scss@import "header", "side-menu"

node-sass ๋กœ ์ปดํŒŒ์ผํ•˜๋ฉด

$ node-sass scss --output css

์•„๋ž˜์™€ ๊ฐ™์ด scss/์— ์žˆ๋˜ ํŒŒ์ผ๋“ค์ด css/ ์•ˆ์— ๊ฐ ํ•˜๋‚˜์”ฉ์˜ ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ๋œ๋‹ค.

Sass-App# ...โ”œโ”€cssโ”‚  โ”œโ”€header.cssโ”‚  โ”œโ”€side-menu.cssโ”‚  โ””โ”€main.cssโ”œโ”€scssโ”‚  โ”œโ”€header.scssโ”‚  โ”œโ”€side-menu.scssโ”‚  โ””โ”€main.scss# ...

์ด๋ฒˆ์—” ๊ฐ€์ ธ์˜ฌ ํŒŒ์ผ ์ด๋ฆ„์— _ ๋ฅผ ๋ถ™์ด๊ณ , ๋ฉ”์ธ ํŒŒ์ผ์ธ main.scss ์—๋งŒ _ ๋ฅผ ๋ถ™์ด์ง€ ์•Š๋Š”๋‹ค.

Sass-App# ...โ”œโ”€scssโ”‚  โ”œโ”€_header.scssโ”‚  โ”œโ”€_side-menu.scssโ”‚  โ””โ”€main.scss# ...
// main.scss@import "header", "side-menu";

์ปดํŒŒ์ผํ•˜๋ฉดโ€ฆ

$ node-sass scss --output css

์•„๋ž˜์ฒ˜๋Ÿผ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š๋Š”๋‹ค.

Sass-App# ...โ”œโ”€cssโ”‚  โ””โ”€main.css  # main + header + side-menuโ”œโ”€scssโ”‚  โ”œโ”€header.scssโ”‚  โ”œโ”€side-menu.scssโ”‚  โ””โ”€main.scss# ...

โ˜๏ธ Webpack ์ด๋‚˜ Parcel , Gulp ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ๋นŒ๋“œํˆด์—์„œ๋Š” Partials ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ํ•„์š” ์—†์ด, ์„ค์ •๋œ ๊ฐ’์— ๋”ฐ๋ผ ๋นŒ๋“œ๋˜์ง€๋งŒ ๋˜๋„๋ก _ ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅ

Reference#

ํŒจ์ŠคํŠธ์บ ํผ์Šค - ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ๊ฐ•์˜ - HTML & CSS, SASS(SCSS) Part by ParkYoungWoong

Sass(SCSS) ์™„์ „ ์ •๋ณต!