PassFront
  1. PassFront
  2. База знаний
  3. Основы CSS

Что такое CSS-in-JS?

Основы CSS

CSS-in-JS — подход, при котором стили пишутся в JavaScript рядом с компонентом, а библиотека превращает их в CSS.

Пример (styled-components)

import styled from 'styled-components';

const Button = styled.button`
  padding: 8px 16px;
  border-radius: 6px;
  background: ${(props) => (props.$primary ? '#0066ff' : '#eee')};
`;

<Button $primary>Сохранить</Button>;

Плюсы

  • стили изолированы — уникальные имена классов генерируются автоматически;
  • удобная динамика от props;
  • стили, логика и разметка в одном месте, удаляются вместе.

Минусы

  • многие библиотеки работают в рантайме и замедляют рендер;
  • сложнее SSR, не работают в React Server Components;
  • дополнительный размер бандла.

Варианты

  • с рантаймом: styled-components, Emotion;
  • без рантайма (стили извлекаются при сборке): vanilla-extract, Linaria, Panda CSS.

Коротко для собеседования

CSS-in-JS — стили в JS рядом с компонентом с автоматической изоляцией и динамикой от props; минус рантайм-библиотек — производительность и SSR.

Подробнее: styled-components — Документация

Другие вопросы раздела