vis-timeline如何设置条目初始垂直位置 加载时默认显示顶部行
解决方案
- 定位到vis-timeline内部实际承载纵向滚动的DOM节点,而非外层自定义容器,组件渲染后会生成类名
.vis-panel.vis-center的滚动容器,直接操作该节点的滚动属性即可 - 滚动操作必须在组件完全渲染完成后执行,可监听timeline实例的
ready事件触发执行,避免操作被组件内部的默认渲染逻辑覆盖 - 直接修改滚动容器的
scrollTop属性为0即可实现滚动到顶部,比调用scroll()方法兼容性更好
示例代码:
// 替换为你自己初始化的timeline实例 const myTimeline = new vis.Timeline(container, items, groups, options); myTimeline.on('ready', () => { // 获取内部滚动容器 const verticalScrollPanel = myTimeline.dom.container.querySelector('.vis-panel.vis-center'); if (verticalScrollPanel) { verticalScrollPanel.scrollTop = 0; } });
如果存在偶发不生效的情况,可加短延时覆盖vis-timeline内部默认的滚动重置逻辑:
myTimeline.on('ready', () => { setTimeout(() => { const verticalScrollPanel = myTimeline.dom.container.querySelector('.vis-panel.vis-center'); if (verticalScrollPanel) { verticalScrollPanel.scrollTop = 0; } }, 100); });
该方案直接操作组件官方约定的内部DOM结构,不需要修改配置项做临时切换,也不会影响后续滚动交互的正常使用。
内容的提问来源于stack exchange,提问作者Théophile
相关产品推荐
相关产品推荐

