본문으로 건너뛰기

스킨 커스터마이징

버전 9.0부터 Gantt 스킨은 사용자 정의 및 스타일링에 사용할 수 있는 CSS 변수들을 사용합니다.

스킨을 동적으로 변경하기

주요 CSS 변수:

:root {
--dhx-gantt-theme: terrace;
--dhx-gantt-font-family: Inter, Helvetica, Arial, sans-serif;
--dhx-gantt-font-size: 14px;


--dhx-gantt-base-colors-white: #FFFFFF;
--dhx-gantt-base-colors-select: #EFF3FF;
--dhx-gantt-base-colors-hover-color: #e0e0e0;
--dhx-gantt-base-colors-border-light: #F0F0F0;
--dhx-gantt-base-colors-border: #DFE0E1;

--dhx-gantt-base-colors-icons: #A1A4A6;
--dhx-gantt-base-colors-disabled: #E9E9E9;
--dhx-gantt-base-colors-select: #E0E5F3;
--dhx-gantt-base-colors-text-light: #555D63;
--dhx-gantt-base-colors-text-base: #23272A;
--dhx-gantt-base-colors-text-on-fill: rgba(255, 255, 255, 0.90);
--dhx-gantt-base-colors-background: #FFFFFF;
--dhx-gantt-base-colors-background-alt: #F2F2F2;

--dhx-gantt-base-colors-primary: #537CFA;
--dhx-gantt-base-colors-warning: #FAB936;
--dhx-gantt-base-colors-error: #E3334E;
--dhx-gantt-base-colors-success: #1BC297;

--dhx-gantt-container-background: var(--dhx-gantt-base-colors-background);
--dhx-gantt-container-color: var(--dhx-gantt-base-colors-text-base);
--dhx-gantt-offtime-background: var(--dhx-gantt-base-colors-background-alt);

--dhx-gantt-scale-background: var(--dhx-gantt-container-background);
--dhx-gantt-scale-border-vertical: 1px solid var(--dhx-gantt-base-colors-border-light);
--dhx-gantt-scale-border-horizontal: 1px solid var(--dhx-gantt-base-colors-border);

--dhx-gantt-scale-color: var(--dhx-gantt-base-colors-text-light);

--dhx-gantt-grid-body-background: transparent;
--dhx-gantt-grid-scale-background: var(--dhx-gantt-scale-background);
--dhx-gantt-grid-scale-color: var(--dhx-gantt-scale-color);
--dhx-gantt-grid-scale-border-vertical: var(--dhx-gantt-scale-border-vertical);
--dhx-gantt-timeline-scale-background: var(--dhx-gantt-scale-background);
--dhx-gantt-timeline-scale-color: var(--dhx-gantt-scale-color);
--dhx-gantt-timeline-scale-border-vertical: var(--dhx-gantt-scale-border-vertical);

/* tasks */


--dhx-gantt-task-blue: linear-gradient(180deg, #527CFF 0%, #9751FC 100%);
--dhx-gantt-task-green: linear-gradient(180deg, #12D979 0%, #1ECDEB 100%);
--dhx-gantt-task-violet: linear-gradient(180deg, #D071EF 0%, #EE71D5 100%);
--dhx-gantt-task-yellow: linear-gradient(180deg, #FFB725 0%, #FFBB25 31.25%, #FAEA27 100%);

--dhx-gantt-task-background: var(--dhx-gantt-task-blue);
--dhx-gantt-task-border: none;
--dhx-gantt-task-color: var(--dhx-gantt-base-colors-text-on-fill);
--dhx-gantt-project-color: var(--dhx-gantt-task-color);
--dhx-gantt-task-line-text: var(--dhx-gantt-container-color);

--dhx-gantt-task-row-border: 1px solid var(--dhx-gantt-base-colors-border);
--dhx-gantt-task-row-background: var(--dhx-gantt-container-background);
--dhx-gantt-task-row-background--odd: var(--dhx-gantt-container-background);

--dhx-gantt-project-background: var(--dhx-gantt-task-green);
--dhx-gantt-milestone-background: var(--dhx-gantt-task-violet);

--dhx-gantt-task-marker-color: var(--dhx-gantt-task-background);

--dhx-gantt-popup-background: var(--dhx-gantt-container-background);
--dhx-gantt-popup-color: var(--dhx-gantt-container-color);

--dhx-gantt-tooltip-background: var(--dhx-gantt-base-colors-text-base);
--dhx-gantt-tooltip-color: var(--dhx-gantt-container-background);

--dhx-gantt-link-background: var(--dhx-gantt-base-colors-icons);
--dhx-gantt-link-background-hover: var(--dhx-gantt-base-colors-icons-hover);
--dhx-gantt-link-critical-background: var(--dhx-gantt-base-colors-error);

}

모든 변수는 패키지의 codebase/sources/less/src/themes/variables.less 파일에서 확인할 수 있습니다.

스킨 커스터마이징 방법

가장 쉬운 방법은 스타일시트에서 관련 CSS 변수들을 재정의하는 것입니다. 아래는 예시입니다:

<style>
:root {
/* scales */
--dhx-gantt-scale-background: #8E8E8E;
--dhx-gantt-base-colors-border-light: #C5C5C5;
--dhx-gantt-base-colors-border: #DFE0E1;
--dhx-gantt-scale-color: #FFF;
--dhx-gantt-base-colors-icons: #00000099;

/* tasks */
--dhx-gantt-task-background: #3db9d3;
--dhx-gantt-task-color: #FFFFFF;
--dhx-gantt-project-background: #6AA84F;
--dhx-gantt-project-color: #FFFFFF;

/* links */
--dhx-gantt-link-background: #ffa011;
--dhx-gantt-link-background-hover: #ffa011;

}
</style>

스킨을 동적으로 변경하기

스킨에 따라 기본 스타일이 재정의되면 커스텀 스타일이 Gantt에 적용됩니다.

노트

For correct inheritance of values across the entire theme, define variables at the :root element.

전체 테마에서 값의 올바른 상속을 보장하려면 :root 요소에서 변수를 정의하십시오. 이 접근 방식은 다른 변수에서 사용하는 변수가 재정의될 때 관련 스타일에 올바르게 영향을 주도록 보장합니다.

예를 들어, 변수 --dhx-gantt-scale-color는 기본 텍스트 색상 변수인 --dhx-gantt-container-color에서 상속됩니다.

  • If you redefine --dhx-gantt-container-color at the :root level, you ensure that --dhx-gantt-scale-color reflects this change.
<style>
:root {
/* --dhx-gantt-scale-color and other
variables that inherit `--dhx-gantt-container-color`
will be affected
*/
--dhx-gantt-container-color: #222;

}
</style>
  • If you redefine --dhx-gantt-container-color at a lower level in the DOM tree, such as within .gantt_container, it won't affect the --dhx-gantt-scale-color variable.
<style>
.gantt_container {
/* only elements that directly
use --dhx-gantt-container-color will be affected
*/
--dhx-gantt-container-color: #222;
}
</style>

How to use source codes

dhtmlxGantt는 다음 형태의 스타일 파일과 함께 제공됩니다:

  • codebase/dhtmlxgantt.css - 스킨용으로 미리 만들어진 압축 CSS 파일이며, 프로덕션에 사용할 수 있습니다;
  • codebase/sources/dhtmlxgantt.css - 미리 빌드된 읽기 가능한 CSS 파일들;
  • codebase/sources/less/ - Gantt 스킨의 소스 less 파일들.

후자는 기존 스킨의 깊은 커스터마이징이나 새로운 스킨을 만드는 데 사용할 수 있습니다.

시작 방법

codebase/sources/less를 NPM 패키지로 초기화할 수 있습니다.
소스는 두 가지 유형의 파일을 포함합니다:

  • 스타일 시트;
  • Gantt 뷰를 미세 조정하거나 새로운 스킨을 만드는 데 사용할 수 있는 미세 변수 선언이 포함된 파일들.

스킨 빌드 방법

In **codebase/sources/less/**에서 실행합니다:

> npm install

설치가 완료되면 아래 명령어를 사용하여 CSS 파일을 재빌드할 수 있습니다:

> npm run build

또는

> npm run watch

스크립트는 소스에서 CSS 파일을 재빌드하고 gantt 패키지의 codebase 폴더에 기존 파일을 대체합니다.

구조

버전 9.0의 less 폴더 구조는 아래와 같습니다(향후 버전에서 변경될 수 있음):

이미지

  • ./src/imgs - 모든 스킨에서 사용되는 SVG 아이콘
  • ./src/iconfont - 웹 폰트에 미리 빌드된 아이콘

스킨 정의

기본 변수 세트는 terrace 스킨에 정의되어 있고, 다른 스킨은 해당 변수를 재정의하고 스타일을 추가합니다.

  • ./src/themes
    • ./src/themes/variables.less - 모든 스킨에서 공통으로 사용되는 변수, terrace 스킨
    • ./src/themes/contrast_black - 대비 블랙 스킨 변수
    • ./src/themes/contrast_white - 대비 화이트 스킨 변수
    • ./src/themes/material - material 스킨 변수
    • ./src/themes/dark - 다크 스킨 변수
    • ./src/themes/flat - 플랫 스킨 변수

스킨 빌드를 위한 진입점

  • theme.less
  • package.json

커스텀 스킨 만들기

새 스킨을 만들려면 sources/less/src/themes 폴더의 기존 스킨 중 하나를 복사하고 이름을 바꿀 수 있습니다. 아래 단계를 따라주세요:

  1. sources/less/src/themes 폴더의 기존 파일 중 하나를 복사하고 이름을 바꿉니다. 예를 들면:
-> copy:
codebase/sources/less/src/themes/material.less

-> rename to:
codebase/sources/less/src/themes/custom.less
  1. 새 파일을 sources/less/src/themes/index.less에 가져와 다음과 같이 추가합니다:
@import "./custom";

그리고 아래 내용처럼 추가합니다:

:root[data-gantt-theme='custom'] {
--dhx-gantt-theme: custom;
--dhx-gantt-font-family: Roboto, Helvetica, Arial, sans-serif;

--dhx-gantt-base-colors-primary: #0288D1;

}

스킨 변수는 :root 요소 아래에서 정의되어야 하며, data-gantt-there 선택자를 사용합니다.

새로운 테마에는 이름이 있는 --dhx-gantt-theme 변수가 포함되어야 합니다.

  1. 아래 명령을 실행하여 스킨을 재빌드합니다:
npm run build
노트

Note that Gantt may apply some predefined settings to the calendar based on the applied skin. When you create a new skin by copying an existing one, you may need to apply the corresponding settings to the Gantt manually.

JS 스타일링 설정

Gantt 스타일링의 모든 측면이 CSS에서 제어되는 것은 아니며, 일부 매개변수는 JavaScript 구성에서 정의됩니다. 예를 들어 다음 속성들:

Need help?
Got a question about the documentation? Reach out to our technical support team for help and guidance. For custom component solutions, visit the Services page.