Перейти к основному содержимому

Документация по CSS

Эта статья показывает способы переопределения настроек цвета по умолчанию для элементов Gantt с использованием пользовательских значений. В статье рассмотрены основные селекторы классов и шаблоны для стилизации следующих частей Gantt: Grid area, Timeline area, Resource panel.

Стилизация грида​

В этом разделе вы найдете CSS-селекторы для стилизации основных элементов [ Grid area ].

grid_area

Общая структура DOM-элемента грида приведена ниже:

- .gantt_grid
- .gantt_grid_scale
- .gantt_grid_head_cell
- .gantt_grid_data
- .gantt_row.odd
- .gantt_row
- .gantt_row.gantt_row_task
- .gantt_row.gantt_row_project
- .gantt_row.gantt_row_milestone
- gantt_cell.gantt_cell_tree
- .gantt_tree_indent
- .gantt_tree_icon.gantt_close
- .gantt_tree_icon.gantt_open
- .gantt_tree_content
- gantt_cell
- .gantt_tree_content

Заголовок грида​

Вы можете изменить стиль элемента Заголовок грида через селектор класса .gantt_grid_scale.

Ниже приведён пример применения общего фонового цвета и цвета шрифта для заголовков грида и таймлайна:

.gantt_grid_scale, .gantt_task_scale, .gantt_task_vscroll {
background-color: #eee;
}
.gantt_grid_scale, .gantt_task_scale,
.gantt_task .gantt_task_scale .gantt_scale_cell,
.gantt_grid_scale .gantt_grid_head_cell {
color: #000;
font-size: 12px;
border-bottom: 1px solid #cecece;
}

grid_header

Связанный пример: Styling grid and timeline headers

Высота шкалы​

Не изменяйте высоту заголовка грида и шкалы времени через CSS.

Высота шкалы должна задаваться через конфигурационное свойство Gantt: scale_height:

gantt.config.scale_height = 50;

Ячейка заголовка грида​

Вы можете применить пользовательский стиль к ячейке заголовка грида через .gantt_grid_head_cell.

Селекторы для стилизации ячейки приведены ниже:

  • .gantt_grid_head_cell[data-column-id="columnName"] - выбирает ячейку конкретного столбца;

columnName совпадает со значением свойства name у столбца:

<style>
.gantt_grid_head_cell[data-column-id="columnName"] {
background-color: #ededed;
color: black;
}
</style>
gantt.config.columns = [
...
{ name: "columnName", align: "center" },
...
];

header_cell

Связанный пример: Styling a particular cell in the grid header

  • .gantt_grid_head_cell[data-column-index="1"] - выбирает конкретный столбец по индексу;

  • .gantt_grid_head_cell[data-column-name="start_date"] - выбирает конкретный столбец по имени.

Грид-тело​

Вы можете добавить собственный цвет элементу тела грида, применив CSS-стили к селектору .gantt_grid_data.

grid_body

Стилизация строк грида​

Стиль строки грида настраивается через .gantt_row.

grid_row

Каждая вторая строка​

Чтобы окрасить каждую вторую строку грида, необходимо задать стили CSS для селектора .gantt_row.odd, например:

.gantt_row.odd {
background-color: #f4f4fb;
}

odd_row_style

Связанный пример: Styling every other row in grid

Вы можете увидеть, что даже строки подсвечиваются на экране, а не нечетные. Но если посмотреть индексы строк (см. gettaskindex), стиль применяется к строкам с нечетными индексами (1, 3, 5 и т.д.).

Выбранная строка​

Вы можете стилизовать выбранную строку грида с помощью селектора .gantt_row.gantt_selected:

.gantt_grid_data .gantt_row.gantt_selected,
.gantt_grid_data .gantt_row.odd.gantt_selected,
.gantt_task_row.gantt_selected {
background-color: #fff3a1;
}

Связанный пример: Styling selected row

Задачи, строки проектов и вехи​

Для стилизации строк задач, проектов или вех используйте следующие селекторы:

  • .gantt_row.gantt_row_task
  • .gantt_row.gantt_row_project
  • .gantt_row.gantt_row_milestone

Например:

.gantt_row.gantt_row_project {
background-color: #fafafa;
font-weight: bold;
}

Связанный пример: Styling rows of project tasks

Частные строки​

Если вы хотите добавить пользовательские классы к конкретной строке, можно применить шаблон grid_row_class следующим образом:

<style>
.highlighted_task.gantt_row {
background-color: #ff9668;
border-color: rgba(0,0,0,0.3);
}
</style>
gantt.templates.grid_row_class = (startDate, endDate, task) => {
if (task.highlight) {
return "highlighted_task";
}
return "";
};

Связанный пример: Styling a particular row in the grid

Высота ряда​

Высоту ряда можно изменить либо с помощью конфигурации row_height:

gantt.config.row_height = 40;

или через свойство row_height задачи:

{ id: 2, text: "Task #1", start_date: "02-04-2028", duration: 8, row_height: 40 },

Не пытайтесь изменять высоту ряда через CSS, это может сломать верстку.

Стилизация ячеек/столбцов грида​

Стилизацию ячеек или столбцов грида можно осуществлять через .gantt_row .gantt_cell.

Вы можете применять CSS-стили к конкретному столбцу двумя способами:

  • через селектор .gantt_row .gantt_cell[data-column-name="columnName"], который определяет столбец по его имени, например:
.gantt_grid_head_cell[data-column-id="start_date"],
.gantt_row .gantt_cell[data-column-name="start_date"] {
background-color: #ededed;
color: black;
}

Связанный пример: Styling a column in grid

Обратите внимание, что .gantt_grid_head_cell и .gantt_cell используют разные дата-атрибуты: data-column-id и data-column-name соответственно. Это несоответствие в правилах CSS Gantt будет исправлено в одной из будущих версий.

  • или же можно добиться того же результата, применив селектор .gantt_row .gantt_cell[data-column-index="1"], который определяет столбец по индексу.

Стилизация таймлайна​

Раздел "Styling Timeline" приведёт вас через CSS-селекторы, которые можно применить, чтобы изменить стиль по умолчанию элементов таймлайна.

timeline

Общая структура DOM-элемента области таймлайна приведена ниже:

- .gantt_task
- .gantt_task_scale
- .gantt_scale_line
- .gantt_scale_cell
- .gantt_data_area
- .gantt_task_bg
- .gantt_task_row
- .gantt_task_row.odd
- .gantt_task_cell
- .gantt_links_area
- .gantt_task_link
- .gantt_bars_area
- .gantt_task_line
- .gantt_task_progress_wrapper
- .gantt_task_progress
- .gantt_task_progress_drag
- .gantt_task_content
- .gantt_task_drag.task_start_date
- .gantt_task_drag.task_end_date
- .gantt_link_control.task_start_date
- .gantt_link_control.task_end_date
- .gantt_link_point
- div - custom layers

Шкала времени​

DOM-элемент шкалы времени имеет следующую структуру:

- .gantt_task_scale
- .gantt_scale_line
- .gantt_scale_cell

Контейнер шкалы времени​

Селектор .gantt_task_scale используется для применения пользовательского CSS к контейнеру шкалы времени.

Например, изменение цвета шрифта и границ шкалы времени выглядит так:

.gantt_grid_scale, .gantt_task_scale {
border-bottom: 1px solid #0e0e0e;
}

.gantt_task .gantt_task_scale .gantt_scale_cell {
color: #000;
}

.gantt_grid_scale .gantt_grid_head_cell {
color: #000;
}

Связанный пример: Styling text and borders of the time scale

Шкалы времени​

Селектор .gantt_scale_line используется для раскрашивания всей шкалы времени. Чтобы нацелиться на конкретную шкалу по её порядку, просто используйте селектор .gantt_scale_line:nth-child(n).

Пример установки цвета фона шкалы времени:

.gantt_scale_line:nth-child(1) {
font-weight: bold;
background-color: #eee;
}

.gantt_scale_line:nth-child(2) {
background-color: #fff;
}

Связанный пример: Background color of the time scale

По умолчанию CSS-классов для таргетинга шкал по единицам нет, но такие классы можно добавить с помощью шаблона scale_row_class.

Ниже приведён пример задания различных стилей для шкал месяцев, недель и дней:

<style>
.gantt_scale_line.month_scale {
font-weight: bold;
background-color: #ddd;
}

.gantt_scale_line.week_scale {
background-color: #e1e1e1;
}

.gantt_scale_line.day_scale {
background-color: #efefef;
}
</style>
gantt.templates.scale_row_class = (scaleConfig) => `${scaleConfig.unit}_scale`;

Связанный пример: Styling different time scales

Ячейки шкалы времени​

Вы можете добавлять собственные стили к ячейкам шкалы времени через селектор .gantt_scale_cell. Например, можно изменить цвет шрифта и границы ячеек:

.gantt_task .gantt_task_scale .gantt_scale_cell {
color: #a6a6a6;
border-right: 1px solid #ebebeb;
}

Связанный пример: Styling text and borders of the scale cells

Чтобы окрасить конкретные даты, используйте свойство css объекта gantt.config.scales, как показано ниже:

gantt.config.scales = [
{ unit: "month", step: 1, format: "%Y %M" },
{ unit: "day", step: 1, format: "%l, %F %d", css: (date) => {
if (!gantt.isWorkTime({ date: date, unit: "day" })) {
return "weekend";
}
return "";
} }
];
<style>
.gantt_scale_cell.weekend {
background-color: #F5F5F5;
}
</style>

Связанный пример: Duration includes only working days

Если нужно закрасить всю колонку, используйте шаблон timeline_cell_class, как описано ниже.

Область данных​

Структура DOM-элемента области данных имеет следующую форму:

- .gantt_data_area
- .gantt_task_bg
- .gantt_task_row
- .gantt_task_row.odd
- .gantt_task_cell
- .gantt_links_area
- .gantt_task_link
- .gantt_bars_area
- .gantt_task_line
- .gantt_task_progress_wrapper
- .gantt_task_progress
- .gantt_task_progress_drag
- .gantt_task_content
- .gantt_task_drag.task_start_date
- .gantt_task_drag.task_end_date
- .gantt_link_control.task_start_date
- .gantt_link_control.task_end_date
- .gantt_link_point
- div - custom layers

Задача​

Панель задачи​

Чтобы изменить внешний вид панели задачи, нужно объявить пользовательский стиль в селекторе .gantt_task_line.

Пример изменения границы панели приведён ниже:

.gantt_task_line {
border-radius: 14px;
}

Связанный пример: Styling borders of the task bars

Чтобы изменить цвет панелей задач, выполните следующие два шага:

  1. Переопределите стили границ и полей прогресса так, чтобы их цвета совпали с любым пользовательским цветом, применяемым к панели задачи:
.gantt_task_line {
border-color: rgba(0, 0, 0, 0.25); /* Черный цвет с 25%-ной непрозрачностью */
}

.gantt_task_line .gantt_task_progress {
background-color: rgba(0, 0, 0, 0.25);
}
  1. Примените необходимый цвет к самой панели задачи и к содержимому внутри панели задачи:
.gantt_task_line {
background-color: #03A9F4;
}

.gantt_task_line.gantt_task_content {
color: #fff;
}

Вы можете найти пример применения общего цвета для границ и индикаторов прогресса на панелях задач с разными цветами в статье Task Coloring.

Чтобы окрасить ряды задач, проектов или вех, нужно добавить пользовательский CSS к соответствующему селектору класса:

  • .gantt_task_line.gantt_bar_task
  • .gantt_task_line.gantt_bar_project
  • .gantt_task_line.gantt_bar_milestone

Пример стилизации выбранной панели:

.gantt_task_line.gantt_selected {
box-shadow: 0 2px 5px #000;
}

.gantt_task_line.gantt_bar_project.gantt_selected {
box-shadow: 0 2px 5px #000;
}

Связанный пример: Styling selected bar

Задачи пользовательского типа будут иметь соответствующее имя класса:

{ id: 2, text: "Task #1", start_date: "02-04-2028", duration: 8, type: "custom_type" },

Панель задачи получит CSS-класс .gantt_task_line.gantt_bar_custom_type.

Разделённые задачи​

Split tasks определяются как подзадачи родительского элемента, а светло-зеленая полоса на заднем плане является полосой этого родительского элемента с дополнительными стилями.

Связанный пример: Expand and collapse split tasks

Если открыть пример и развернуть "Task #2", вы увидите зеленую полосу сводного элемента "Task #2".

Когда разделённые задачи отображаются в одной строке, эта зеленая полоса всё равно рисуется в той же позиции, но с изменённой непрозрачностью и значениями z-index.

Её можно оформить так же, как и все полосы в таймлайне, и полностью скрыть с помощью следующего CSS:

.gantt_task_line.gantt_split_parent {
display: none;
}

Когда у вас есть только одна разделённая задача, сводный элемент (type: "project") становится невидимым, потому что полностью перекрывается разделённой задачей. Если разделённых подзадач нет, сводный элемент имеет заданную по умолчанию дату и продолжительность.

Полоса прогресса​

Следующие селекторы можно использовать для задания цвета полосы прогресса:

  • .gantt_task_progress - чтобы изменить цвет заполнения полосы прогресса;
  • .gantt_task_progress_drag - чтобы стилизовать ручку перетаскивания прогресса.

Вы можете изменить внешний вид задач и полос прогресса, применив CSS-правила следующим образом:

  • пример изменения фонового, переднего цвета и цветов прогресса:
/* задача */

/* фоновый цвет панелей задач */
.gantt_task_line {
background-color: #3db9d3;
border: 1px solid #2898b0;
}

/* цвет текста */
.gantt_task_line .gantt_task_content {
color: #fff;
}

/* заливка прогресса */
.gantt_task_progress {
background: #299cb4;
}
  • пример стилизации Project(Summary) bars:
/* project */
/* фоновый цвет бара проекта */
.gantt_task_line.gantt_bar_project {
background-color: #65c16f;
border: 1px solid #3c9445;
}

/* прогресс бара проекта */
.gantt_task_line.gantt_bar_project .gantt_task_progress {
background-color: #46ad51;
}
  • пример стилизации Milestone bars:
/* milestone */
.gantt_task_line.gantt_milestone {
background-color: #d33daf;
border: 0 solid #61164f;
}

Связанный пример: Background, foreground, and progress colors. Styling Project and Milestone bars.

Пользовательский цвет для конкретных панелей задач​

Если вам нужно задать цвет для отдельных панелей задач, необходимо присвоить им пользовательский класс, используя шаблон gantt.templates.task_class:

gantt.templates.task_class = (startDate, endDate, task) => {
if (task.highlight) {
return "highlighted_task";
}
return "";
};

и применить этот пользовательский класс в селекторе:

.highlighted_task.gantt_task_line {
background-color: #ff9668;
border-color: rgba(0,0,0,0.3);
}

.highlighted_task .gantt_task_progress {
text-align: center;
z-index: 0;
background: rgba(0,0,0,0.3);
}

Связанный пример: Styling particular task bars

Выделение области внутри панели задачи​

Если вы хотите выделить определённые области внутри панели задачи, вам нужно внедрить дополнительные элементы в саму панель с использованием шаблона gantt.templates.task_text:

gantt.templates.task_text = (startDate, endDate, task) => `
<div className="custom_progress warm_up" style={{width: '20%'}}></div>
<div className="custom_progress in_progress" style={{width: '60%'}}>${task.text}</div>
<div className="custom_progress cool_down" style={{width: '20%'}}></div>
`;

и применить CSS:

.custom_progress {
display: inline-block;
vertical-align: top;
text-align: center;
height: 100%;
}

.custom_progress.nearly_done {
background-color: #4CC259;
}

.custom_progress.in_progress {
background-color: #88BFF5;
}

.custom_progress.idle {
background-color: #d96c49;
}

Связанный пример: Custom html content (Stackbar)

Структура DOM-элемента связи приведена ниже:

- .gantt_task_link
- .gantt_line_wrapper
- .gantt_link_line_right
- .gantt_link_line_left
- .gantt_link_line_up
- .gantt_link_line_down
- .gantt_link_arrow.gantt_link_arrow_right
- .gantt_link_arrow.gantt_link_arrow_left

Ниже пример того, как можно окрасить элементы зависимых связей:

.gantt_line_wrapper div {
background-color: #ffa011;
}
.gantt_link_arrow_right {
border-left-color: #ffa011;
}
.gantt_link_arrow_left {
border-right-color: #ffa011;
}
.gantt_task_link:hover .gantt_line_wrapper div {
box-shadow: 0 0 5px 0 #ffa011;
}

Связанный пример: Styling links

Толщина линии связи устанавливается через конфигурацию gantt.config.link_line_width конфигурацию.

Резайзер​

Ниже приведены селекторы, которые можно применить для стилизации DOM-элемента резайзера:

  • .gantt_task_drag
  • .gantt_task_drag.task_start_date
  • .gantt_task_drag.task_end_date

Пример отключения резайзера для даты начала:

.gantt_task_line:hover .gantt_task_drag.task_start_date {
display: none;
}

Связанный пример: Disabling resizer of the start date

Пример отключения резайзера для даты конца:

.gantt_task_line:hover .gantt_task_drag.task_end_date {
display: none;
}

Связанный пример: Disabling resizer of the end date

Следующие селекторы можно использовать для применения стилей к элементу круглой ручки в начале (конце) задачи:

  • .gantt_link_control .gantt_link_point
  • .gantt_link_control.task_start_date .gantt_link_point
  • .gantt_link_control.task_end_date .gantt_link_point

Фоновый грид​

Структура DOM-элемента фоновой сетки имеет вид:

- .gantt_data_area
- .gantt_task_bg
- .gantt_task_row
- .gantt_task_row.odd
- .gantt_task_cell

Фоновые строки:​

Чтобы изменить настройки стиля по умолчанию для фоновых строк, добавьте пользовательский стиль к селектору .gantt_task_row. Например:

.gantt_row,
.gantt_task_row {
border-bottom: 1px solid #ebebeb;
background-color: #fff;
}

Чтобы окрасить каждую вторую фоновую строку, нужно определить пользовательские свойства CSS в селекторе .gantt_task_row.odd.

Вы можете легко задать пользовательские цвета для выбранной строки, например:

.gantt_grid_data .gantt_row.gantt_selected,
.gantt_grid_data .gantt_row.odd.gantt_selected,
.gantt_task_row.gantt_selected {
background-color: #fff3a1;
}
.gantt_task_row.gantt_selected .gantt_task_cell {
border-right-color: #ffec6e;
}

Связанный пример: Styling selected row

Фоновые ячейки​

Чтобы изменить настройки стиля по умолчанию для фоновых ячеек, следует задать стиль в селекторе .gantt_task_cell.

Чтобы окрасить фоновый столбец, используйте шаблон timeline_cell_class:

gantt.templates.timeline_cell_class = (task, date) => {
if (!gantt.isWorkTime({ date: date, unit: "day", task: task })) {
return "weekend";
}
return "";
};

и примените CSS:

.gantt_task_cell.weekend {
background-color: #F5F5F5;
}

.gantt_task_row.gantt_selected .gantt_task_cell.weekend {
background-color: #F8EC9C;
}

Связанный пример: Duration includes only working days

Панель ресурсов​

Панель ресурсов состоит из гридов и таймлайнов, аналогичных основной зоне Gantt.

По умолчанию гриды и таймлайны ресурсного вида используют глобальные шаблоны и конфигурации. Вы можете использовать разные конфигурации и шаблоны для панели ресурсов, передав их в конфигурацию раскладки (layout config).

Вы можете нацелить ресурсную сетку и таймлайн, используя соответствующее имя вида в CSS-селекторе:

.resourceGrid_cell .gantt_row,
.resourceHistogram_cell .gantt_task_row {
border-bottom: 1px solid #ebebeb;
background-color: #fff;
}

Общая структура DOM-элемента панели ресурсов приведена ниже:

- .gantt_layout_root
- .grid_cell
- .timeline_cell
- .resourceGrid_cell
- .resourceHistogram_cell
- .resourceTimeline_cell

Имена классов под .gantt_layout_root берутся из конфигурации раскладки и соответствуют значению свойства view у ячейки раскладки:

gantt.config.layout = {
css: "gantt_container",
rows: [
{
cols: [
{ view: "grid", group: "grids", scrollY: "scrollVer" },
...
]
},
...
{
id: "resources",
cols: [
{ view: "resourceGrid", group: "grids", scrollY: "resourceVScroll" },
...
{ view: "resourceHistogram", capacity: 24, scrollX: "scrollHor",
scrollY: "resourceVScroll" },
...
]
},
...
]
};

Ресурсная грид​

resource_grid

Вы можете использовать те же селекторы, что и для задачи грида; верхний уровень селектора — .resourceGrid_cell:

.resourceGrid_cell .gantt_row,
.resourceGrid_cell .gantt_row.odd {
background-color: rgba(232, 232, 232, 0.6);
}

Ресурсная гистограмма​

resource_histogram_css

Ресурсная гистограмма имеет те же элементы, что и основная временная шкала. По умолчанию все селекторы, нацеленные на основную временную шкалу, будут нацелены и на ресурсную шкалу, если только вы не используете класс ячейки раскладки (.timeline_cell, .resourceHistogram_cell) в своих селекторах.

Вы можете нацелить ресурсную гистограмму с помощью следующего селектора: .resourceHistogram_cell.

Общая структура DOM-элемента ресурсной гистограммы:

- .gantt_task_bg
- .gantt_bars_area
- div
- .gantt_histogram_fill
- .gantt_histogram_cell
- div
- .gantt_histogram_hor_bar
- .gantt_histogram_vert_bar

Пример изменения цвета элементов гистограммы:

.gantt_histogram_cell {
color: #000;
}

.gantt_histogram_label {
font-weight: 700;
font-size: 13px;
}

.gantt_histogram_fill {
background-color: rgba(41,157,180,.2);
}

Чтобы изменить цвет конкретных ячеек, используйте шаблон gantt.templates.histogram_cell_class:

gantt.templates.histogram_cell_class = (startDate, endDate, resource, resourceTasks) => {
if (getAllocatedValue(resourceTasks, resource) > getCapacity(startDate, resource)) {
return "column_overload";
}
};

и примените CSS:

.column_overload .gantt_histogram_fill {
background-color: #ffa9a9;
}

Чтобы окрасить линию гистограммы, можно применить пользовательский CSS к следующим классам селекторов:

  • .gantt_histogram_hor_bar
  • .gantt_histogram_vert_bar

Изменение цвета линии гистограммы выглядит так:

.gantt_histogram_hor_bar, .gantt_histogram_vert_bar {
background: #299db4;
}

Рисунок ресурса​

resource_diagram

Рисунок ресурса имеет те же элементы, что и основная временная шкала. По умолчанию все селекторы, нацеленные на основную временную шкалу, будут нацелены и на ресурсную шкалу, если только вы не используете класс ячейки раскладки (.timeline_cell, .resourceTimeline_cell) в своих селекторах.

Вы можете нацелить ресурсную диаграмму с помощью следующего селектора: .resourceTimeline_cell.

Общая структура DOM-элемента ресурсной диаграммы:

- .gantt_task_bg
- .gantt_bars_area
- div
- .gantt_resource_marker
- div

Верхний уровень селектора — .resourceTimeline_cell.

Пример стиля для меток ресурсной диаграммы:

.gantt_resource_marker div {
background: #51c185;
width: 28px;
height: 28px;
line-height: 29px;
display: inline-block;
color: #FFF;
margin: 3px;
}

Чтобы изменить стиль конкретных маркеров, используйте шаблон gantt.templates.resource_cell_class:

<style>
.resource_marker.workday_over div {
border-radius: 3px;
background: #ff8686;
}
gantt.templates.resource_cell_class = (startDate, endDate, resource, resourceTasks) => {
const cssClasses = [];
cssClasses.push("resource_marker");
if (resourceTasks.length <= 1) {
cssClasses.push("workday_ok");
} else {
cssClasses.push("workday_over");
}
return cssClasses.join(" ");
};
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.