CSS-in-JS

JavaScript 파일 안에서 CSS 스타일을 작성하는 방식으로, 컴포넌트 단위로 스타일을 관리할 수 있게 해주는 기술입니다.

기존 CSS와의 차이

기존 CSSCSS-in-JS
작성 위치.css 파일.js / .ts 파일 내부
스코프전역컴포넌트 단위
동적 스타일클래스 교체 방식JS 변수 직접 사용
클래스명 충돌발생 가능자동 해시 처리로 방지

동작 방식

컴포넌트에 스타일 작성
→ 런타임에 고유 클래스명 생성 (ex. .sc-abc123)
→ <style> 태그로 주입
→ 해당 클래스명을 컴포넌트에 적용

대표 예시 (styled-components)

import styled from 'styled-components';

const Button = styled.button`
  background: ${props => props.primary ? 'blue' : 'white'};
  color: ${props => props.primary ? 'white' : 'black'};
  padding: 8px 16px;
`;

// 사용
<Button primary>확인</Button>
<Button>취소</Button>

장단점

장점

단점

대표 라이브러리

라이브러리특징
styled-components가장 널리 사용, 태그드 템플릿 문법
Emotion성능 최적화, 유연한 API
Stitches런타임 최소화, 빠른 성능

성능 문제를 해결하려는 시도에서 제로 런타임 CSS가 등장했습니다.

CSLOG에서 보기