SCSS переменные

Element Plus предоставляет возможность тонко настраивать стили компонентов с помощью SCSS переменных. Это позволяет унифицировать визуальное оформление проекта и облегчает поддержку тем и цветовых схем. Использование переменных обеспечивает гибкость, поскольку позволяет менять внешний вид компонентов без изменения их исходного кода.

Подключение SCSS в проекте

Для работы с SCSS переменными необходимо убедиться, что проект поддерживает препроцессор SCSS. В стандартном проекте Vue 3 с использованием Vite это делается через установку пакета:

npm install -D sass

Далее SCSS файлы можно импортировать в глобальный стиль проекта:

@import 'element-plus/theme-chalk/src/index.scss';

Основные категории переменных

SCSS переменные в Element Plus делятся на несколько групп:

  1. Цветовые переменные Управляют основной палитрой компонентов:

    $--color-primary: #409eff; // основной цвет
    $--color-success: #67c23a; // цвет успешного действия
    $--color-warning: #e6a23c; // цвет предупреждения
    $--color-danger: #f56c6c; // цвет ошибки
    $--color-info: #909399;    // информационный цвет
  2. Типографические переменные Настраивают шрифты и размеры текста:

    $--font-size-base: 14px;      // базовый размер шрифта
    $--font-size-small: 12px;     // маленький шрифт
    $--font-size-large: 16px;     // крупный шрифт
    $--line-height-base: 1.5;     // базовая высота строки
  3. Переменные размеров компонентов Управляют размерами кнопок, полей ввода и других элементов:

    $--size-small: 32px;
    $--size-medium: 40px;
    $--size-large: 48px;
  4. Переменные отступов и границ Позволяют контролировать внутренние и внешние отступы, толщину и радиус границ:

    $--border-radius-base: 4px;
    $--border-color-base: #dcdfe6;
    $--padding-base: 12px;

Переопределение переменных

Чтобы изменить стили компонентов глобально, достаточно переопределить SCSS переменные до импорта стилей Element Plus. Например:

// custom-variables.scss
$--color-primary: #1f8ef1;
$--font-size-base: 15px;

@import 'element-plus/theme-chalk/src/index.scss';

В этом случае все компоненты Element Plus будут использовать новые значения переменных.

Использование переменных в компонентах

SCSS переменные можно применять не только глобально, но и внутри своих стилей для конкретных компонентов:

.my-button {
  background-color: $--color-primary;
  font-size: $--font-size-base;
  border-radius: $--border-radius-base;
  padding: $--padding-base $--padding-base * 2;
}

Создание тем

SCSS переменные позволяют создавать несколько тем для приложения. Например, можно определить светлую и тёмную темы:

// light-theme.scss
$--color-primary: #409eff;
$--color-background: #ffffff;

// dark-theme.scss
$--color-primary: #1f8ef1;
$--color-background: #303133;

Темы подключаются динамически с помощью импорта нужного SCSS файла или с помощью CSS переменных, которые Element Plus поддерживает через :root.

Советы по оптимизации

  • Глобальный файл переменных: собирать все переопределенные переменные в одном файле, чтобы было удобно управлять темами.
  • Минимизация повторов: использовать переменные для любых повторяющихся значений, например, цветов, размеров и отступов.
  • Модулизация: для больших проектов можно разделять переменные по категориям (colors.scss, sizes.scss, typography.scss), чтобы поддерживать чистоту кода.
  • Использование функций SCSS: можно комбинировать цвета с помощью lighten, darken, rgba для динамической генерации оттенков.

Преимущества SCSS переменных в Element Plus

  • Быстрая глобальная настройка компонентов без изменения исходного кода библиотеки.
  • Поддержка адаптивного дизайна через единые размеры и отступы.
  • Легкость в создании и переключении тем.
  • Повышение консистентности интерфейса и упрощение поддержки кода.

SCSS переменные являются мощным инструментом для кастомизации и управления стилями компонентов в Element Plus, обеспечивая гибкость и структурированность в больших проектах.