皮肤自定义
从 v7.0 起,Scheduler 的皮肤使用 CSS 变量,您可以用它们进行自定义和样式设置。
相关示例
关键 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>
相关示例
通过这种方式定义变量,您可以重新定义默认样式,确保自定义样式应用于 Scheduler。
注释
为确保在整个主题中正确继承值,请在 :root 元素定义变量。
在整个组件中确保正确继承和应用的关键,是在 :root 元素定义这些样式。当重新定义其他变量所使用的变量时,它将正确影响组件中的相关样式。
例如,变量 --dhx-scheduler-scale-color 继承自主文本颜色变量 --dhx-scheduler-container-color。
- 如果在
:root级别重新定义--dhx-scheduler-container-color,您将确保--dhx-scheduler-scale-color能反映这一变化。
<style>
:root {
/* --dhx-scheduler-scale-color 和其他
继承自 `--dhx-scheduler-container-color`
的变量将受影响
*/
--dhx-scheduler-container-color: #222;
}
</style>
- 如果在 DOM 树的较低级别重新定义
--dhx-scheduler-container-color,例如在 .dhx_cal_container 内,则不会影响--dhx-scheduler-scale-color变量。
<style>
.dhx_cal_container {
/* 仅直接使用 --dhx-scheduler-container-color 的元素会受影响 */
--dhx-scheduler-container-color: #222;
}
</style>
如何使用源代码
dhtmlxScheduler 附带以下形式的样式文件:
- codebase/dhtmlxscheduler.css - 面向皮肤的预构建压缩 CSS 文件,已经准备就绪可用于生产环境;
- codebase/sources/dhtmlxscheduler.css - 预构建的可读 CSS 文件;
- codebase/sources/less/ - Scheduler 皮肤的源 Less 文件。
后者可用于对现有皮肤进行深度自定义或创建新的皮肤。
如何开始
您可以将 codebase/sources/less 初始化为一个 NPM 包。源代码将包含两种类型的文件:
- 样式表;
- 带有微变量声明的文件,您可以使用它们对调度器视图进行微调或创建新的皮肤。