Начиная с версии 7.0, скины Scheduler построены с использованием CSS-переменных, что позволяет легко настраивать и стилизовать внешний вид.
Related sample: Customize and switch between themes
Ключевые CSS-переменные:
:root {
--dhx-scheduler-font-family: Inter, Helvetica, Arial, sans-serif;
--dhx-scheduler-font-size: 14px;
--dhx-scheduler-base-colors-primary: #537CFA;
--dhx-scheduler-base-colors-warning: #FAB936;
--dhx-scheduler-base-colors-error: #E3334E;
--dhx-scheduler-base-colors-error-text: #FFFFFF;
--dhx-scheduler-base-colors-success: #1BC297;
--dhx-scheduler-base-colors-secondary: rgba(0, 0, 0, 0.04);
--dhx-scheduler-base-colors-select: #EFF3FF;
--dhx-scheduler-base-colors-border: #D0DBE3;
--dhx-scheduler-base-colors-icons: #A1A4A6;
--dhx-scheduler-base-colors-disabled: #E9E9E9;
--dhx-scheduler-base-colors-readonly: var(--dhx-scheduler-base-colors-icons);
--dhx-scheduler-base-colors-text-light: #44494E;
--dhx-scheduler-base-colors-text-base: #23272A;
--dhx-scheduler-base-colors-background: #FFFFFF;
--dhx-scheduler-container-background: var(--dhx-scheduler-base-colors-background);
--dhx-scheduler-container-color: var(--dhx-scheduler-base-colors-text-base);
--dhx-scheduler-scale-color: var(--dhx-scheduler-container-color);
--dhx-scheduler-base-padding: 4px;
--dhx-scheduler-border-radius: var(--dhx-scheduler-base-module);
--dhx-scheduler-event-colors-primary: #537CFA;
--dhx-scheduler-event-text-primary: rgba(255, 255, 255, 0.90);
--dhx-scheduler-toolbar-height: 40px;
--dhx-scheduler-header-border: var(--dhx-scheduler-default-border);
--dhx-scheduler-halfhour-border: 1px dotted var(--dhx-scheduler-base-colors-border);
/* events */
--dhx-scheduler-event-background-primary: var(--dhx-scheduler-base-colors-primary);
--dhx-scheduler-event-blue: linear-gradient(180deg, #527CFF 0%, #9751FC 100%);
--dhx-scheduler-event-green: linear-gradient(180deg, #12D979 0%, #1ECDEB 100%);
--dhx-scheduler-event-violet: linear-gradient(180deg, #D071EF 0%, #EE71D5 100%);
--dhx-scheduler-event-yellow: linear-gradient(180deg, #FFB725 0%, #FFBB25 31.25%,
#FAEA27 100%);
--dhx-scheduler-event-menu-background: var(--dhx-scheduler-popup-background);
--dhx-scheduler-event-menu-color: var(--dhx-scheduler-base-colors-primary);
--dhx-scheduler-event-background: var(--dhx-scheduler-event-blue);
--dhx-scheduler-event-border: none;
--dhx-scheduler-event-color: var(--dhx-scheduler-event-text-primary);
--dhx-scheduler-event-line-text: var(--dhx-scheduler-container-color);
--dhx-scheduler-event-marker-color: var(--dhx-scheduler-event-background);
--dhx-scheduler-popup-background: var(--dhx-scheduler-container-background);
--dhx-scheduler-popup-color: var(--dhx-scheduler-container-color);
--dhx-scheduler-popup-border: none;
--dhx-scheduler-popup-border-radius: var(--dhx-scheduler-border-radius);
}
Все эти переменные находятся в файле codebase/sources/less/src/themes/variables.less внутри пакета.
Самый простой способ изменить внешний вид Scheduler — переопределить CSS-переменные в собственном стилевом файле. Например:
<style>:root {
--dhx-scheduler-base-colors-primary: #01579B;
--dhx-scheduler-event-background: #33B579;
--dhx-scheduler-event-color: #FFFFFF;
--dhx-scheduler-base-colors-border: #B0B8CD;
--dhx-scheduler-border-radius:2px;
}
</style>
Related sample: Customize and switch between themes
Задавая переменные таким образом, вы заменяете стандартные стили своими, и изменения применяются ко всему Scheduler.
Для корректного наследования значений по всей теме рекомендуется определять переменные на элементе :root.
Определяя стили на уровне :root, вы обеспечиваете правильное наследование переменных во всём компоненте. Таким образом, если одна переменная зависит от другой, изменения будут распространяться корректно.
Например, переменная --dhx-scheduler-scale-color
наследует значение из --dhx-scheduler-container-color
.
--dhx-scheduler-container-color
на уровне :root, то --dhx-scheduler-scale-color
также изменится.<style>:root {
/* --dhx-scheduler-scale-color и другие переменные,
наследующие --dhx-scheduler-container-color,
будут затронуты */
--dhx-scheduler-container-color: #222;
}
</style>
--dhx-scheduler-container-color
глубже в DOM, например внутри .dhx_cal_container, это не изменит --dhx-scheduler-scale-color
.<style>.dhx_cal_container {
/* будут затронуты только элементы,
использующие --dhx-scheduler-container-color напрямую */
--dhx-scheduler-container-color: #222;
}
</style>
dhtmlxScheduler предоставляет стили в следующих форматах:
Исходные LESS-файлы пригодятся, если вы хотите глубоко кастомизировать существующие скины или создать собственный.
Вы можете подключить codebase/sources/less как NPM-пакет. Эта папка содержит два типа файлов:
Внутри codebase/sources/less/ выполните:
> npm install
После завершения установки вы можете пересобрать CSS-файлы следующей командой:
> npm run build
Или запустить отслеживание изменений и автоматическую пересборку:
> npm run watch
Эти скрипты компилируют CSS из исходников и размещают результат в папке codebase пакета Scheduler, заменяя существующие CSS-файлы.
Структура папки less для версии 7.0 (может измениться в будущих релизах):
Стандартные переменные определены в скине terrace
, остальные скины переопределяют эти переменные и добавляют свои стили.
terrace
Чтобы создать новый скин, начните с копирования и переименования существующего скина из sources/less/src/themes. Выполните следующие шаги:
1) Скопируйте и переименуйте один из существующих файлов скина. Например:
-> копировать:
codebase/sources/less/src/themes/material.less
-> переименовать в:
codebase/sources/less/src/themes/custom.less
2) Импортируйте ваш новый файл в sources/less/src/themes/index.less следующим образом:
@import "./custom";
Затем определите свои переменные следующим образом:
:root[data-scheduler-theme='custom'] {
--dhx-scheduler-theme: custom;
--dhx-scheduler-font-family: Roboto, Helvetica, Arial, sans-serif;
--dhx-scheduler-base-colors-primary: #0288D1;
}
Не забудьте определять переменные скина под селектором :root
с использованием атрибута data-scheduler-theme
.
Каждая новая тема должна содержать переменную --dhx-scheduler-theme, установленную в название темы.
3) Пересоберите скины командой:
npm run build
Имейте в виду, что Scheduler может применять некоторые предустановленные настройки в зависимости от используемого скина. При создании нового скина на основе существующего, возможно, потребуется вручную скорректировать соответствующие настройки Scheduler.
Некоторые параметры стилей Scheduler не управляются только через CSS и задаются через JavaScript-конфигурацию. К ним относятся: