3. CSS in JS

  • CSS in JS ๋ž€

  • CSS

๊ฐ•์˜ ์ •๋ฆฌ

CSS-in-JS

CSS-in-JS๋ž€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์Šคํƒ€์ผ๋งํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํŒŒ์‹ฑ๋  ๋•Œ, CSS๊ฐ€ style ํƒœ๊ทธ์— ์ƒ์„ฑ์ด ๋˜๊ณ , DOM์— ์ ์šฉ์ด ๋œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ์–ธ์ ์ด๊ณ  ์œ ์ง€๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์œผ๋กœ ์Šคํƒ€์ผ๋ง์„ ํ•  ์ˆ˜ ์žˆ๊ณ , ์ปดํฌ๋„ŒํŠธ ๋ ˆ๋ฒจ์—์„œ์˜ CSS ์ถ”์ƒํ™”๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ์ด์™€ ๊ฐ™์€ ์ปจ์…‰์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ๋งŽ์ด ์กด์žฌํ•œ๋‹ค.

  • Emotion

  • Styled Components

  • JSS

  • Tailwind CSS

์œ„์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ tagged template literals ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํƒ€์ผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

import styled from 'styled-components';
// Create a component that renders a <p> element with blue text
const BlueText = styled.p`
  color: blue;
`;

<BlueText>My blue text</BlueText>

๊ธฐ์กด์˜ ์ „ํ†ต์ ์ธ CSS ๋ฐฉ์‹๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ CSS-in-JS๋กœ๋Š” ์Šคํƒ€์ผ์„ ๋™์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ CSS๋ฅผ ์บก์Аํ™”ํ•˜์—ฌ ๋ชจ๋“ˆํ™”๋œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

์ „ํ†ต์ ์ธ CSS ๋ฐฉ์‹์˜ ๋ฌธ์ œ์ 

  1. Global Namespace

  2. Dependencies

  3. Dead Code Elimination

  4. Minification

  5. Sharing Constants

  6. Non-deterministic Resolution

  7. Isolation

A Unified Styling Language (2017)

  1. Scoped styles

  2. Critical CSS

  3. Smarter optimisations

  4. Package management

  5. Non-browser styling

All You Need To Know About CSS-in-JS (2017)

  1. Thinking in components

  2. CSS-in-JS leverages the full power of the JavaScript ecosystem to enhance CSS.

  3. True rules isolation

  4. Scoped selectors

  5. Vendor Prefixing

  6. Code sharing

  7. Only the styles which are currently in use on your screen are also in the DOM (react-jss).

  8. Dead code elimination

  9. Unit tests for CSS

์„ฑ๋Šฅ ์ด์Šˆ

HTML, CSS ํŒŒ์ผ์€ ๋ณ‘๋ ฌ์ ์œผ๋กœ ๋กœ๋”ฉ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, JS ํŒŒ์ผ์˜ ๊ฒฝ์šฐ์—๋Š” ๋ชจ๋‘ ๋‹ค์šด๋กœ๋“œ ๋˜์ง€ ์•Š์œผ๋ฉด ์‹คํ–‰์„ ํ•  ์ˆ˜ ์—†๋‹ค. CSS-in-JS ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— CSS๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠนํžˆ ๋ฆฌ์•กํŠธ์˜ ๊ฒฝ์šฐ์—๋Š” SSR, Code Splitting์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฒˆ๋“ค์˜ ํฌ๊ธฐ๊ฐ€ ๊ฑฐ๋Œ€ํ•ด์ง„๋‹ค.

๋Œ€์•ˆ:

  • Linaria

    • CSS๋ฅผ ํ‰๋ฒ”ํ•œ ํ…์ŠคํŠธ๋กœ ์ž‘์„ฑ.

    • React์— ์ข…์†์ ์ด์ง€ ์•Š์ง€๋งŒ, React Styled Component๋„ ์ง€์›ํ•จ.

  • vanilla-extract

    • CSS๋ฅผ ์˜ค๋ธŒ์ ํŠธ ํ˜•ํƒœ๋กœ ํ‘œํ˜„. React์˜ Inline Style๊ณผ ์œ ์‚ฌํ•จ.

    • React์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.

Last updated