Skip to content

Latest commit

ย 

History

History
142 lines (119 loc) ยท 4.41 KB

styling.md

File metadata and controls

142 lines (119 loc) ยท 4.41 KB

์Šคํƒ€์ผ๋ง ๋ฐฉ์‹

๋ฆฌ์•กํŠธ์—์„œ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์Šคํƒ€์ผ๋งํ•  ๋•Œ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ์ค‘ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” Sass์™€ styled-components์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.


Sass(Scss)

Sass(Syntactically Awesome Style Sheets)๋Š” CSS pre-processor๋กœ์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.

  • ๋ณต์žกํ•œ ์ž‘์—…์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
  • ์ฝ”๋“œ์˜ ์žฌํ™œ์šฉ์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค.
  • ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์—ฌ์ค˜ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ํ•ด์ค€๋‹ค.

Sass์—์„œ๋Š” ๋‘๊ฐ€์ง€ ํ™•์žฅ์ž .scss/.sass๋ฅผ ์ง€์›ํ•œ๋‹ค. ๊ทธ์ค‘ Scss๋Š” Sass ์„ธ๋ฒˆ์งธ ๋ฒ„์ „์—์„œ ์ถ”๊ฐ€๋˜์—ˆ๋Š”๋ฐ, Sass์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋ฉด์„œ CSS ๊ตฌ๋ฌธ๊ณผ ์™„์ „ํžˆ ํ˜ธํ™˜๋˜๋„๋ก ๋งŒ๋“ค์–ด์กŒ๋‹ค.

Scss ํŠน์ง•

๋ถ€๋ชจ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ธฐ์ˆ ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (nesting)

// CSS
.wrapper {
    width: 100%;
    height: 100%;
}
.wrapper div {
    width: 500px;
    height: 200px;
}
.wrapper div span {
    background-color: blue;
}

// SCSS
.wrapper {
    width: 100%;
    height: 100%;
    div {
        width: 500px;
        height: 200px;
        span {
            background-color: blue;
        }
    }
}

$ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๊ณตํ†ต๋œ ์†์„ฑ์„ ์žฌํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

$font-color: red;
.content {
    color: $font-color;
    float:left;
    .title {
        color: $font-color;
        font-size: 18px;
    }
}

mixin์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ณตํ†ต๋œ ์†์„ฑ์˜ ๋ฌถ์Œ์„ ์žฌํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

@mixin box-style {
    width: 100px;
    height: 50px;
    background-color: red;
}
.section {
    position: absolute;
    top: 0;
    .box {
        @include box-style;
    }
}

import ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ ํŒŒ์ผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

// style.scss
@import 'header';
@import 'aside';
@import 'footer';
...

์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

// if
$num: two;
div {
  @if $num == one {
    color: blue;
  } @else if $num == two {
    color: red;
  } @else {
    color: black;
  }
}

// .css (..compile)
div{
    color: red;
}

// for
@for $i from 1 through 3 {
  .item-#{$i} { 
    width: 2em * $i; 
  }
}

๋‹จ์ 

  • ์ „์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์œ„ํ•œ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  • ์ปดํŒŒ์ผ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง„๋‹ค.

styled-components

styled-components๋Š” ํ˜„์กดํ•˜๋Š” ๋ฆฌ์•กํŠธ css-in-js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž˜๋‚˜๊ฐ€๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. css-in-js๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ๋‚ด์—์„œ ์Šคํƒ€์ผ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

์žฅ์ 

  • ํ•˜๋‚˜์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์•ˆ์— ์Šคํƒ€์ผ๊นŒ์ง€ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— .css/.scss ํŒŒ์ผ ๊ฐ™์€๊ฑธ ๋งŒ๋“ค ๊ณ ๋ฏผ์€ ์•ˆํ•ด๋„ ๋œ๋‹ค.
  • ์Šคํƒ€์ผ๋งํ•œ ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌํ•˜๋Š” props ๊ฐ’์„ ์Šคํƒ€์ผ์ชฝ์—์„œ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด props์— ๋”ฐ๋ผ ์กฐ๊ฑด๋ถ€ ์Šคํƒ€์ผ๋ง์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ปดํŒŒ์ผ์‹œ ํด๋ž˜์Šค๋ช…์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํด๋ž˜์Šค๋ช…์ด ๊ฒน์น˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. (ํด๋ž˜์Šค๋ช…์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ๋œ์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค)
  • css๋ฅผ ์ปดํฌ๋„ŒํŠธํ™”ํ•  ์ˆ˜ ์žˆ์–ด ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์•„์ง€๊ณ , ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ css๊ฐ€ ๋ณต์žกํ•ด์ง€๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

CSS ์ „์ฒ˜๋ฆฌ๊ธฐ vs styled-components

ํด๋ž˜์Šค๋ช…

css ์ „์ฒ˜๋ฆฌ๊ธฐ๋Š” nesting์ด ๊ฐ€๋Šฅํ•ด ๊ฐ€๋…์„ฑ๊ณผ ๋””๋ฒ„๊น…์ด ์šฉ์ดํ•˜์ง€๋งŒ, ํด๋ž˜์Šค๋ช…์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ํ•ด์•ผํ•œ๋‹ค.

ํ•˜์ง€๋งŒ css-in-js ๋ฐฉ์‹์€ ์ปดํŒŒ์ผ์‹œ ํด๋ž˜์Šค๋ช…์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํด๋ž˜์Šค๋ช…์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

์„ฑ๋Šฅ ์ฐจ์ด

css ์ „์ฒ˜๋ฆฌ๊ธฐ๋Š” html ๋ฌธ์„œ์—์„œ ์ด๋ฏธ ์ฝํ˜€์ ธ ์žˆ๋Š” ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ ์Šคํƒ€์ผ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์–‘์ด ๋งŽ๋”๋ผ๋„ ๊ทธ ์ดํ›„์— ์ถ”๊ฐ€์ ์ธ ๋ Œ๋”๋ง์€ ์ƒ๋Œ€์ ์œผ๋กœ ์ ๋‹ค.

ํ•˜์ง€๋งŒ css-in-js ๋ฐฉ์‹์€ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง๋  ๋•Œ์—๋งŒ ํ•ด๋‹น ์Šคํƒ€์ผ ์ •๋ณด๋ฅผ ์ผ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง๋  ๋•Œ๋งˆ๋‹ค ์Šคํƒ€์ผ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ ์ธ ์ด๋ฒคํŠธ๊ฐ€ ๋งŽ์€ ์‚ฌ์ดํŠธ๋ผ๋ฉด ๊ทธ๋งŒํผ ์ปดํฌ๋„ŒํŠธ์˜ ๋ฆฌ๋ Œ๋”๋ง์ด ์ž์ฃผ ๋ฐœ์ƒํ•ด, ์Šคํƒ€์ผ ์ •๋ณด๋ฅผ ๊ทธ๋•Œ๊ทธ๋•Œ ๋‹ค์‹œ ์ฝ์–ด์™€์•ผ ํ•ด์„œ ์„ฑ๋Šฅ ์ƒ์˜ ์ด์Šˆ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.


์ฐธ๊ณ