Element Plus предоставляет мощный механизм для кастомизации интерфейса через темы. Темы позволяют изменять цвета, размеры, отступы и другие параметры компонентов без изменения исходного кода библиотеки. Настройка темы осуществляется через CSS-переменные, SCSS-файлы или через JavaScript API.
Каждый компонент Element Plus использует набор CSS-переменных для стилизации. Для создания пользовательской темы необходимо определить значения этих переменных.
Пример переопределения базовых цветов:
:root {
--el-color-primary: #409EFF;
--el-color-success: #67C23A;
--el-color-warning: #E6A23C;
--el-color-danger: #F56C6C;
--el-color-info: #909399;
--el-border-radius-base: 8px;
--el-font-size-base: 14px;
}
Ключевые моменты:
--el-color-primary – основной цвет для кнопок, ссылок и
активных элементов.--el-border-radius-base – базовый радиус скругления для
всех компонентов.--el-font-size-base – базовый размер шрифта,
используемый во всех текстовых компонентах.CSS-переменные можно размещать в глобальном CSS-файле проекта, либо инжектировать динамически через JavaScript.
Element Plus предоставляет SCSS-переменные для более глубокой кастомизации. Это особенно полезно, если требуется изменять внутренние состояния компонентов, которые недоступны через CSS-переменные.
Пример создания SCSS-темы:
$--color-primary: #409EFF;
$--color-success: #67C23A;
$--border-radius-base: 10px;
$--font-size-base: 16px;
@import "~element-plus/packages/theme-chalk/src/index";
Особенности SCSS-подхода:
@import позволяет скомпилировать
новую тему вместе с проектом.Для интерактивного изменения темы в рантайме можно использовать
функцию ElMessageBox, ElButton и другие
компоненты с динамически заданными стилями через CSS-переменные.
Пример динамической смены основной палитры:
function setThemeColor(primaryColor) {
document.documentElement.style.setProperty('--el-color-primary', primaryColor);
}
// Использование
setThemeColor('#FF5722');
Преимущества:
Определение базовой палитры:
Настройка типографики и размеров:
Настройка специфических компонентов:
ElButton – цвет фона, цвет текста, тень при
наведении.ElInput – цвет рамки, внутренние отступы, фокусное
состояние.Интеграция через SCSS или CSS-переменные.
Добавление механизма динамической смены темы (опционально).
Пример расширенной CSS-темы:
:root {
--el-color-primary: #1E90FF;
--el-color-success: #28A745;
--el-color-warning: #FFC107;
--el-color-danger: #DC3545;
--el-color-info: #17A2B8;
--el-border-radius-base: 12px;
--el-font-size-base: 15px;
--el-input-height: 42px;
--el-button-padding-horizontal: 18px;
--el-button-padding-vertical: 10px;
}
Element Plus поддерживает интеграцию сторонних шрифтов и иконок. Для этого достаточно переопределить CSS-переменные или использовать SCSS:
$--font-family-base: "Roboto", sans-serif;
$--icon-font-path: "~assets/fonts/element-icons.woff2";
Рекомендации:
Хотите, я могу подготовить пошаговый пример полной пользовательской темы, включая кнопки, формы, таблицы и уведомления, чтобы можно было использовать сразу в проекте?