DHTMLX Gantt 甘特图自定义样式

CSS:

  /* 任务线 */
  .gantt_task_line{
    height: 16px !important;
    line-height: 16px !important;
    margin-top: 8px;
    border: none !important;
  }
  /* 里程碑 */
  .gantt_task_line.gantt_milestone{
    width: 30px !important;
    height: 30px !important;
    border: none !important;
    background-color: inherit !important;
    background-size: cover;
  }
  /* 里程碑icon */
  .gantt_task_line.gantt_milestone .gantt_task_content{
    margin-top: -8px;
    transform: rotate(0deg) !important;
    background-image: url('iconURL') !important;
  }
  /* 左侧悬浮单元格背景色 */
  .gantt_grid_data .gantt_row.odd:hover, .gantt_grid_data .gantt_row:hover{background-color: aquamarine !important;}
  /* 选中一列背景色 */
  .gantt_grid_data .gantt_row.gantt_selected, .gantt_grid_data .gantt_row.odd.gantt_selected, .gantt_task_row.gantt_selected{background-color: aquamarine !important;}
  /* 选中一列每个单元格右border颜色 */
  .gantt_task_row.gantt_selected .gantt_task_cell{border-right-color: aquamarine !important;}

	/* 任务名前的logo */
  .gantt_tree_icon.gantt_file, .gantt_tree_icon.gantt_folder_open, .gantt_tree_icon.gantt_folder_closed{width: 10px; background-image: none;}
  .gantt_tree_content{overflow: hidden;text-overflow: ellipsis;}

	/* 标记线 */
	.gantt_marker{background-color: brown;opacity: .4;}

js配置:

// 4.1 甘特图的行高
gantt.config.row_height = 30;
// 4.2 甘特图的表头高度
gantt.config.scale_height = 40;
// 4.3 设置滚动条宽/高度
gantt.config.scroll_size = 10;

滚动条样式:

/*滚动条整体样式*/
  .gantt-wrapper ::-webkit-scrollbar {
    width: 14px;  /*宽分别对应竖滚动条的尺寸*/
    height: 6px;  /*高分别对应横滚动条的尺寸*/
  }

  /*滚动条里面轨道*/
  .gantt-wrapper ::-webkit-scrollbar-track {
    background-color: rgba(0,0,0,.2);
  }
  /*滚动条里面拖动条*/
  .gantt-wrapper ::-webkit-scrollbar-thumb {
    background-color: rgba(0,0,0,.5);
    border-radius: 5px;
  }
### dhtmlxGantt 中多个任务在同一行显示的解决方案 为了实现多个任务在同一行内显示的效果,可以利用 `dhtmlxGantt` 的自定义布局功能和特定配置属性。通过调整这些设置,能够满足复杂工作流下的可视化需求。 #### 使用链接任务(Links) 如果希望两个或更多任务共享同一时间线位置,则可以通过创建依赖关系来模拟这种效果: ```javascript gantt.config.links_section_height = 0; // 隐藏默认连接线条区域 gantt.init("gantt_here"); var tasks = [ { id: 1, text: "Task A", start_date: "2023-10-01", duration: 5, progress: 0.6 }, { id: 2, text: "Task B", start_date: "2023-10-01", // 和 Task A 开始日期相同 duration: 5, // 持续时间和 Task A 相同 progress: 0.4 } ]; // 创建一个虚拟的任务用于关联其他实际任务 var link_task_id = gantt.addTask({ id: 'link-task', parent: null, text: "", start_date: new Date(), end_date: new Date() }); // 添加硬编码的前置条件使得它们看起来像是并列发生 tasks.forEach(task => { gantt.createLink(link_task_id, task.id); }); ``` 这种方法会强制所有被链接的任务在图表上占据相同的垂直空间[^1]。 #### 自定义样式与模板 另一种方式是修改 CSS 或者使用 `template` 函数来自定义渲染逻辑,从而让不同任务条目重叠在一起而不影响交互行为: ```css /* 调整 .gantt_task_content 类的选择器 */ .gantt_task_content { position: absolute !important; } ``` 配合 JavaScript 设置固定的高度值给每项任务容器,并确保其宽度足够覆盖整个时间段范围内的视觉表现形式[^2]: ```javascript gantt.templates.task_class = function(start, end, task){ return "custom-overlap"; }; gantt.attachEvent("onTemplatesReady", function(){ $(".gantt_task").each(function(index, element){ $(element).height(20); // 设定统一高度 }); }); ``` 以上两种策略可以根据具体应用场景灵活选用或组合应用,以达到预期中的多任务共存一行展示目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值