vis-timeline未启用堆叠时同排项目删除按钮预留间隙能否消除?
vis-timeline 非堆叠模式下同排项强制间隙解决方案
问题根源
非堆叠(stack: false)模式下的同排项间隙由两部分组成:
- 框架默认给同排相邻项设置的10px水平边距
- 删除按钮的固定布局占位:仅设置
editable.remove: false只会禁用删除功能,不会取消布局层面对删除按钮的宽度预留,这部分预留宽度约20px,和观察到的间隙尺寸一致。
可行实现方案
无需开启堆叠,通过配置+样式调整即可实现项首尾时间相接时无间隙同排排布,同时保留时间段不允许重叠的规则:
- 调整Timeline初始化配置,核心是关闭删除按钮的布局占位、清零项水平边距:
var options = { stack: false, // 保持非堆叠模式 editable: { updateTime: true, // 按需保留拖拽调整时间能力 updateGroup: true, // 按需保留跨行列拖拽能力 remove: false // 禁用删除功能 }, showButtonDelete: false, // 关键:彻底取消删除按钮的布局占位计算 margin: { item: 0, // 关键:清零同排相邻项的默认水平边距 axis: 5 // 时间轴与项的边距可按需保留,不影响项之间的间隙 }, // 可选:若拖拽时存在时间吸附导致的间隙,可自定义snap逻辑关闭强制吸附 snap: function (date) { return date; } };
- 补充CSS样式,清除DOM层面的残留间隙:
/* 清除项容器默认内边距 */ .vis-item { padding: 0; } /* 彻底清除删除按钮的残留占位 */ .vis-item .vis-delete { display: none !important; width: 0 !important; height: 0 !important; margin: 0 !important; } /* 可选:给项内容单独加内边距,避免文字贴边,不影响项整体边界计算 */ .vis-item .vis-content { padding: 4px 6px; }
配置完成后,首尾时间相接(前项end值等于后项start值)的项初始化时会自动排布在同一行,拖拽调整时也可完全贴齐,不会被强制换行,也不会出现时间段重叠。
内容的提问来源于stack exchange,提问作者Lord Bo
相关产品推荐
相关产品推荐

