Vis.js 将vis网络图配置为仅在收缩时缩放,而不在鼠标滚动时缩放
我有一个由vis.js创建的大型网络图,它在浏览器中100%宽,非常高,因此需要向下滚动页面才能看到所有内容-我希望我的页面能够像世界上大多数其他网页一样运行-但是当我滚动时,vis.js会缩放,而不是滚动页面。如何关闭卷轴的缩放功能,但仍允许进行例如捏(或按住键+卷轴) 当然,我可以使用此选项关闭缩放-并添加一些内置的缩放按钮:Vis.js 将vis网络图配置为仅在收缩时缩放,而不在鼠标滚动时缩放,vis.js,vis.js-network,Vis.js,Vis.js Network,我有一个由vis.js创建的大型网络图,它在浏览器中100%宽,非常高,因此需要向下滚动页面才能看到所有内容-我希望我的页面能够像世界上大多数其他网页一样运行-但是当我滚动时,vis.js会缩放,而不是滚动页面。如何关闭卷轴的缩放功能,但仍允许进行例如捏(或按住键+卷轴) 当然,我可以使用此选项关闭缩放-并添加一些内置的缩放按钮: var options = { interaction: { zoomView: false, navigationButtons: true,
var options = {
interaction: {
zoomView: false,
navigationButtons: true,
}
};
但这并不理想。它要求用户滚动到页面底部以访问缩放控件。另外,我想要一个更容易访问的缩放功能(是的,我知道,我刚刚关闭了更容易访问的缩放功能)。Vis似乎有更多的方法重新缩放,而不是
总而言之:我希望禁用鼠标滚轮/轨迹板滚动来显示图表,这样可以提供自然的整页滚动行为,再加上捏一下(或按住一个键+滚动)来缩放。我认为没有特定于vis网络的解决方案。您必须检测鼠标滚动并相应地进行处理,如下所示:
container.addEventListener("wheel", function(e){
if (e.stopPropagation) e.stopPropagation();
return false;
})
为了支持旧浏览器,您需要DOMMouseScroll
和mouseweel
事件
不幸的是,我手边没有鼠标,因此无法真正为您测试这一点,但这里有一个游乐场,您可以自己完成此操作:捏缩缩放功能在onwheel侦听器中处理,并可以通过ctrlKey属性检测到。您可以使用自己的处理程序覆盖该处理程序,如果未检测到夹点,则立即返回,否则将照常执行
this.network = container ? new Network(container, data, options) : {};
const { interactionHandler } = this.network;
if (interactionHandler) {
interactionHandler.body.eventListeners.onMouseWheel = (event) => {
if (!event.ctrlKey) return; // ctrlKey detects a max touchpad pinch in onwheel event
interactionHandler.onMouseWheel(event);
};
}