Вёрстка сайта с использованием CSS Custom Properties (переменные)

Когда бренд меняет цвета или внедряет тёмную тему, правка стилей превращается в долгий процесс пересборки и деплоя. Мы разрабатываем вёрстку на CSS Custom Properties, чтобы управлять дизайн-системой через переменные в реальном времени. Наша команда реализует проект под ключ — от структуры токенов до поддержки, обеспечивая гибкость и масштабируемость без срыва сроков.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Вёрстка сайта с использованием CSS Custom Properties (переменные)
Простой
~1 день
Часто задаваемые вопросы

Вёрстка сайта с использованием CSS Custom Properties (переменные)

Представьте: интернет-магазин с 50 000 товаров, цвета бренда меняются каждый сезон. Раньше нужно было переписывать 2000 строк SCSS, пересобирать стили и ждать деплоя. С CSS Custom Properties мы сократили это до изменения одной строки в JavaScript — и цвета обновились на всех страницах за миллисекунды. Экономия времени на каждом обновлении — 8 часов. Мы занимаемся вёрсткой с CSS Custom Properties более 5 лет, внедрили токены в 30+ проектах. Средняя экономия на поддержке стилей — 150 человеко-часов в год. Свяжитесь с нами — обсудим ваш проект и оценим возможность внедрения.

Почему CSS Custom Properties лучше препроцессорных переменных?

Переменные SCSS/Sass компилируются в статические значения — их нельзя изменить в рантайме. Custom Properties живут в DOM: каскадируются, наследуются, доступны из JavaScript. Это единственный способ сделать полноценную темизацию без пересборки CSS. Согласно MDN, кастомные свойства наследуются по дереву элементов, что позволяет переопределять их в медиа-запросах и контекстах.

Характеристика CSS Custom Properties SCSS-переменные
Изменение через JS Да Нет
Наследование по DOM Да Нет
Медиа-запросы Да Нет
Анимация Да (с @property) Нет
Тёмная тема Да — один переключатель Требуется несколько файлов

Какие проблемы решают CSS Custom Properties на практике?

Проблема 1: Управление цветовой схемой. Хардкод цветов в каждом компоненте превращает обновление палитры в ад. С токенами меняем --color-accent в одном месте — и вся сетка, кнопки, иконки обновляются мгновенно. Обычно мы наблюдаем сокращение CSS на 30%.

Проблема 2: Адаптивные размеры без медиа-запросов. Раньше под каждый брейкпоинт нужно было писать отдельные правила. Используем clamp() с кастомными свойствами — получается fluid typography, которая подстраивается под любую ширину экрана. Количество медиа-запросов уменьшается на 50%.

Проблема 3: Анимация свойств, которые раньше были неанимируемыми. Например, вращение градиента или числовой прогресс. @property регистрирует тип, и браузер начинает интерполировать значение. Это открывает новые возможности для UI-эффектов.

Как мы строим систему токенов: кейс из практики

Один из проектов — интернет-магазин электроники. Изначально использовались SCSS-переменные с жёстко заданными цветами. Каждое обновление дизайна требовало пересборки и деплоя, занимало 2 дня. Мы внедрили трёхуровневую систему токенов:

  • Примитивы: базовые цвета, отступы, радиусы.
  • Семантические токены: --color-bg-primary, --color-text-primary.
  • Компонентные переменные: --btn-bg, --card-padding.
:root {
  --color-blue-500: #3b82f6;
  --color-gray-50: #f9fafb;
  --space-4: 1rem;
  --radius-md: 8px;
  --color-bg-primary: var(--color-gray-50);
  --color-accent: var(--color-blue-500);
}

[data-theme="dark"] {
  --color-bg-primary: #0f172a;
  --color-accent: #60a5fa;
}

.button {
  --btn-bg: var(--color-accent);
  background-color: var(--btn-bg);
  padding: var(--space-1) var(--space-4);
  border-radius: var(--radius-md);
}

Результат: теперь дизайнер меняет цвета в Figma — Style Dictionary автоматически генерирует new CSS, а мы обновляем одну строку в коде. Время на ребрендинг сократилось с 2 дней до 2 часов (93% ускорение). Закажите аудит ваших стилей — узнайте, сколько можно сэкономить.

Пошаговый план внедрения CSS Custom Properties

  1. Аудит текущих стилей — ищем хардкод цветов, отступов, шрифтов. Определяем частоту изменений.
  2. Проектирование системы токенов — выделяем примитивы, семантику, компонентные переменные.
  3. Создание CSS-файла с токенами — :root для светлой темы, [data-theme="dark"] для тёмной.
  4. Рефакторинг компонентов — заменяем статические значения на var().
  5. Интеграция с Figma — подключаем Style Dictionary для автоматического экспорта.
  6. Тестирование контрастности и регрессии — проверяем WCAG AA, визуальное совпадение pixel-perfect.

Типичные ошибки при внедрении

  • Забыли зарегистрировать числовые свойства через @property перед анимацией.
  • Использовали var() без fallback — при ошибке свойство ломается.
  • Переопределили токен на неправильном селекторе — сбой каскада.
  • Не задали initial-value для @property — анимация не работает.
  • Перепутали примитивы и семантику — система становится непрозрачной.

Как управлять стилями через JavaScript?

Custom Properties — мост между логикой и дизайном. Меняем цвет акцента программно:

document.documentElement.style.setProperty('--color-accent', '#8b5cf6'); // Динамический parallax
window.addEventListener('scroll', () => {
  const progress = window.scrollY / document.body.scrollHeight;
  document.documentElement.style.setProperty('--scroll-progress', progress);
});

Для плавного изменения значения используют requestAnimationFrame или CSS-переходы.

Как автоматизировать экспорт токенов из Figma?

Используем Style Dictionary: он читает JSON-файлы и генерирует CSS-переменные. Figma-плагины экспортируют значения цветов, отступов и шрифтов. Style Dictionary преобразует их в :root с кастомными свойствами. Это исключает ручное копирование и рассинхронизацию.

Что такое @property и как он расширяет возможности CSS?

Без регистрации типа браузер не интерполирует кастомное свойство. Документация CSS @property объясняет синтаксис. Пример:

@property --gradient-angle {
  syntax: '<angle>';
  initial-value: 0deg;
  inherits: false;
}

.element {
  --gradient-angle: 0deg;
  background: conic-gradient(from var(--gradient-angle), blue, purple);
  animation: rotate 3s linear infinite;
}

@keyframes rotate {
  to {
    --gradient-angle: 360deg;
  }
}

Интеграция с инструментами

Для старых браузеров используем PostCSS с плагином postcss-custom-properties. Style Dictionary экспортирует токены из Figma:

// postcss.config.js
module.exports = {
  plugins: [
    require('postcss-custom-properties')({
      preserve: true,
    }),
  ],
};

// style-dictionary.config.mjs
export default {
  source: ['tokens/**/*.json'],
  platforms: {
    css: {
      transformGroup: 'css',
      files: [
        {
          destination: 'src/styles/tokens.css',
          format: 'css/variables',
          options: {
            selector: ':root'
          },
        },
      ],
    },
  },
};

Как сделать адаптивные значения без media queries?

Fluid typography с помощью clamp():

:root { --font-size-h1: clamp(1.75rem, 4vw + 0.5rem, 3.5rem); --section-padding: clamp(3rem, 8vw, 8rem); } 

Это автоматически масштабирует элементы в зависимости от ширины вьюпорта без точек перелома.

Сроки и что вы получаете

Первичная настройка системы токенов (примитивы + семантика + light/dark) занимает от 4 до 6 часов. Миграция готового проекта — от 1 до 2 дней в зависимости от объёма CSS. Интеграция с Figma через Style Dictionary настраивается один раз и автоматизирует экспорт токенов.

Этап Время Результат
Аудит стилей 2-4 часа Список хардкода
Проектирование токенов 4-6 часов Документация токенов
Рефакторинг CSS 1-2 дня Замены var()
Интеграция с Figma 2-3 часа Автоэкспорт

Мы гарантируем, что каждый токен проверен на контрастность (AA) и единообразие. Свяжитесь с нами — оценим ваш проект и предложим оптимальное решение. Обсудим внедрение — оценим ваш проект.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060