使用甘特图样式
dhtmlxGantt 提供了丰富的选项来自定义其外观。你可以应用预定义的皮 肤以更改甘特图的整体外观,也可以针对任务、连接线、时间刻度、网格等各个元素进行样式调整。
本指南汇总了对甘特图各部分进行样式设置的一般说明,帮助你更轻松地查阅文档。关于每个具体元素的详细信息,请参考相关文档。
网格样式
网格区域的样式可通过相关的 그리드의 템플릿 进行修改。
网格列标题
你可以使用 grid_header_class 模板为网格列标题应用自定义样式。例如,可以这样更改特定标题的背景色:
<style>
.updColor{
background-color:#ffeb8a!important;
}
</style>
gantt.templates.grid_header_class = function(columnName, column){
if(columnName == 'duration' ||columnName == 'text')
return "updColor";
};

Related example: Styling Headers of Grid Columns
网格标题中的自定义元素
你可以在网格标题中添加自定义元素,如按钮、图标或输入框。只需在 gantt.config.columns 配置项中,将元素的 HTML 作为 label 属性的值即可:
gantt.config.columns = [
{name:"add", label:"", width:50, align:"left" },
{name:"text", label:"<div className='searchEl'>Task name <input id='search' type='text'"+ /*!*/
"placeholder='Search tasks...'></div>", width:250, tree:true}, /*!*/
// other columns
];
以下是搜索功能的实现方式:
var inputEl = document.getElementById('search');
inputEl.oninput = function(){
gantt.refreshData();
}
function hasSubstr(parentId){
var task = gantt.getTask(parentId);
if(task.text.toLowerCase().indexOf(inputEl.value.toLowerCase() ) !== -1)
return true;
var child = gantt.getChildren(parentId);
for (var i = 0; i < child.length; i++) {
if (hasSubstr(child[i]))
return true;
}
return false;
}
gantt.attachEvent("onBeforeTaskDisplay", function(id, task){
if (hasSubstr(id))
return true;
return false;
});

Related example: Custom Elements in Grid Header
网格标题中的图标和图片
要在标题中包含图片或图标,可以通过 label 属性将其插入单元格的内部 HTML:
var textLabel = [
"<div className='gantt-text-label'>"+
"<img src='http://docs.dhtmlx.com/scheduler/assets/index/icon1.png'>"+
"<span>Text</span>" +
"</div>"
].join("");
gantt.config.columns = [
{name: "text", label:textLabel,tree: true, width: '*', resize: true},
{name: "start_date", align: "center", resize: true},
{name: "duration", align: "center"},
{name: "add", width: 44}
];
Related example: Images in Grid Header: Columns Config
另外,也可以通过 CSS 的 .gantt_grid_head_
.gantt_grid_head_text {
background-image:url('http://docs.dhtmlx.com/scheduler/assets/index/icon1.png');
background-repeat:no-repeat;
}

Related example: Images in Grid Header:CSS
网格标题中的多行文本
请参考 如何在网格单元格/标题中显示多行内容 部分的示例。
网格行的背景色
你可以通过 grid_row_class 模板为包含任务的所有或特定网格行设置自定义背景色。例如,修改特定行的背景色:
<style>
.updColor{
background-color:#ffeb8a!important;
}
</style>
gantt.templates.grid_row_class = function(start, end, task){
if(task.id == 12)
return "updColor";
};

Related example: Coloring Grid Rows
网格行悬停时的颜色
要在鼠标悬停时高亮显示网格行,可以应用如下样式规则:
.gantt_grid_data .gantt_row.odd:hover, .gantt_grid_data .gantt_row:hover,
.gantt_grid_data .gantt_row.gantt_selected,
.gantt_grid_data .gantt_row.odd.gantt_selected,
.gantt_task_row.gantt_selected{
background-color: cyan;
}

Related example: Coloring Grid Rows on Hover
自定义网格列
dhtmlxGantt 允许你通过 gantt.config.columns 配置项的 template 属性自定义网格列的默认外观。
template 属性是一个接收数据项对象并返回最终内容的函数。这样你可以实现几乎任何内容的自定义。例如,可以更改网格行的文本颜色,或在网格列中使用自定义元素。