3. CSS in JS

CSS-in-JS๋Š” JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•˜๋Š” ์Šคํƒ€์ผ ์ง€์ • ๊ธฐ์ˆ .

CSS์˜ ๋ฌธ์ œ์ ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

  1. Global namespace ๋ชจ๋“  ์Šคํƒ€์ผ์ด global์— ์„ ์–ธ๋˜์–ด ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” class ์ด๋ฆ„์„ ์ ์šฉํ•ด์•ผ ํ•จ.

  2. Dependencies css๊ฐ„ ์˜์กด ๊ด€๊ณ„ ๊ด€๋ฆฌ๊ฐ€ ํž˜๋“ฌ

  3. Dead Code Elimination ๊ธฐ๋Šฅ ์ถ”๊ฐ€, ๋ณ€๊ฒฝ, ์‚ญ์ œ ๊ณผ์ •์—์„œ ๋ถˆํ•„์š”ํ•œ css๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์–ด๋ ค์›€

  4. Minification ํด๋ž˜์Šค ์ด๋ฆ„์˜ ์ตœ์†Œํ™”๊ฐ€ ์–ด๋ ค์›€

  5. Sharing Constants JS ์ฝ”๋“œ์™€ ์ƒํƒœ ๊ฐ’์„ ๊ณต์œ ํ•  ์ˆ˜ ์—†์Œ

  6. Non-deterministic Resolution CSS ๋กœ๋“œ ์ˆœ์„œ์— ๋”ฐ๋ผ ์Šคํƒ€์ผ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‹ฌ๋ผ์ง

  7. Isolation CSS์™€ JS๊ฐ€ ๋ถ„๋ฆฌ๋œ ํƒ“์— ์ƒ์†์— ๋”ฐ๋ฅธ ๊ฒฉ๋ฆฌ๊ฐ€ ์–ด๋ ค์›€

๋ณด์™„ํ•˜๊ณ ์ž CSS in CSS, CSS in JS ๋ฐฉ์‹์ด ๋“ฑ์žฅ.

CSS in CSS

SASS, CSS Modules๊ฐ€ ์žˆ๋‹ค.

๋™์ผํ•œ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๋ฅผ ๊ณต์œ ํ•˜๋Š” ์†์„ฑ๋“ค์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์šฉ์ด. (nested ๊ตฌ์กฐ)

! ๋ณ€์ˆ˜ ์‚ฌ์šฉ์œผ๋กœ ์ค‘๋ณต ์ฝ”๋“œ ๊ด€๋ฆฌ ์šฉ์ด.

$bg-color: blue;
$bg-img: "/assets/images/";

.box {
  background: $bg-color url($bg-img + "bg.jpg");
}

! mixin ์„ ํ†ตํ•ด ์Šคํƒ€์ผ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ž„

@mixin replace-text($image, $x: 50%, $y: 50%) {
  text-indent: -99999em;
  overflow: hidden;
  text-align: left;

  background: {
    image: $image;
    repeat: no-repeat;
    position: $x $y;
  }
}

.mail-icon {
  @include replace-text(url("/images/mail.svg"), 0);
}

ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ํด๋ž˜์Šค ์ค‘๋ณต์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•ด์ฃผ์ง„ ๋ชปํ•จ.

CSS Modules ์˜ ์žฅ์ 

  • ์ค‘๋ณต ํด๋ž˜์Šค๋ช…์„ ๋” ์ด์ƒ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋จ( ๋ชจ๋“  CSS ์„ ํƒ์ž์— ๊ณ ์œ ํ•œ ํ•ด์‹œ๊ฐ’์„ ๋ถ€์—ฌํ•จ์œผ๋กœ์จ ์†์„ฑ ์ค‘์ฒฉ์„ ๋ฐฉ์ง€ํ•จ )

// App.jsx
// ์•„๋ž˜์™€ ๊ฐ™์ด import ํ•ด์„œ ์‚ฌ์šฉ
import styles from "./styles.module.css";

function App() {
  return (
    <div id={styles.container}>
      <button className={styles.button}>๋ฒ„ํŠผ</button>
    </div>
  );
}

export default App;

๋‹จ์ .

์ค‘๋ณต ํด๋ž˜์Šค๋ฅผ ์จ๋„ ์ƒ๊ด€ ์—†์œผ๋‹ˆ ํด๋ž˜์Šค๋ช…์„ ์„ฑ์˜์—†์ด ์ž‘์„ฑํ•ด๋„ ๋™์ž‘ํ•œ๋‹ค

์ปดํฌ๋„ŒํŠธ๋ณ„ cssํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋‹ค๋ณด๋‹ˆ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋ฉด ๋„ˆ๋ฌด ๋งŽ์€ css ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•ด์•ผํ•จ.

CSS in JS ์žฅ์ 

CSS๋ฅผ ์ปดํฌ๋„ŒํŠธ ๋ ˆ๋ฒจ๋กœ ์ถ”์ƒํ™”ํ•œ๋‹ค

JS ํ™˜๊ฒฝ์„ ์ตœ๋Œ€ํ•œ์œผ๋กœ ํ™œ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค

CSS ์ฝ”๋“œ ๊ฒฝ๋Ÿ‰ํ™”( BEM ๋“ฑ์œผ๋กœ ํด๋ž˜์Šค ๋ช…์ด ๊ธธ์–ด์ง€๋”๋ผ๋„ ์ž๋™์œผ๋กœ ์งง์€ ๊ธธ์ด์˜ ์œ ๋‹ˆํฌํ•œ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค )

styled components ๋‹จ์ 

๋Ÿฌ๋‹ ์ปค๋ธŒ.

์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋  ๋•Œ CSS๊ฐ€ ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์—, FOUC ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค ( FOUC( Flash of unstyled content ) : ์Šคํƒ€์ผ ์‹œํŠธ๊ฐ€ ์ ์šฉ๋˜๊ธฐ ์ „ ๋งˆํฌ์—… ๋œ ๊ทธ๋Œ€๋กœ์˜ ๋ชจ์Šต์ด ์ž ๊น ๋ณด์ด๋Š” ํ˜„์ƒ

๋ณ„๋„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜์— ๋”ฐ๋ผ ๋ฒˆ๋“ค ํฌ๊ธฐ ์ฆ๊ฐ€, CSS-in-CSS์— ๋น„ํ•ด ๋А๋ฆฐ ์†๋„

Last updated