【问题标题】:How to disable scroll function?如何禁用滚动功能?
【发布时间】:2020-01-04 06:07:47
【问题描述】:

我对“双滚动”有疑问;这是我的应用程序的屏幕:

如您所见,添加表格的空间被滚动条包围。 我只需要滚动功能来放大和缩小图表,而不是上下移动它。目前的情况是,如果我运行放大和缩小图表的函数,它也会向上或向下滚动。这样的双卷轴毫无意义。

是否可以只关闭“滚动”功能而不关闭侧面的滚动条?

这是一些代码(我的事件轮)(我正在使用库“MindFusion Diagramming”):

document.addEventListener('wheel', function (e) {
    var zoom = diagram.getZoomFactor();
    zoom -= e.deltaY / 35;
    if(zoom > 70 && zoom < 200 )
    {
        diagram.setZoomFactor(zoom);
    }
    //e.preventDefault();
});

当我取消注释 e.preventDefault () 时,这是一个错误

我的 div(内容是带有滚动条的区域):

<div id="content" style="position: static; width: 1600px; height: 700px;"  >
        <!-- The Overview component is bound to the canvas element below -->
        <div style="position: absolute; right: 120px; width: 200px;
            height: 200px; border: 1px solid #ffffff; background-color: #c0c0c0;">
            <canvas id="overview" width="200" height="200">
            </canvas>
        </div>
    <!-- The Diagram component is bound to the canvas element below -->
    <div style="position: static; width: 100%; height: 100%; overflow: auto;">
        <canvas id="diagram" width="2100" height="2100">
            This page requires a browser that supports HTML 5 Canvas element.
        </canvas>
    </div>
</div>

【问题讨论】:

  • 取消注释e.preventDefault()并将其放在函数定义的顶部。
  • 什么都没有改变,我仍然有同样的错误

标签: javascript jquery html css


【解决方案1】:

试试,

document.addEventListener('wheel', function (e) {
    e.preventDefault();
    var zoom = diagram.getZoomFactor();
    zoom -= e.deltaY / 35;
    if(zoom > 70 && zoom < 200 )
    {
        diagram.setZoomFactor(zoom);
    }
}, { passive : false});

参考:what are passive event listeners

【讨论】:

  • 谢谢!但如果你允许,我还有一个问题。是否可以缩放到光标所在的位置?还是取决于我使用的 MindFusion 库提供的可能性?我的javascript真的很糟糕。 // 目前,缩放主要针对该部分的左上角。
  • 真的对不起哥们,我没有提到MindFusion library :(
  • 没问题,也许我能应付。再次感谢!
  • 我的荣幸^_^
  • 我做到了,所以现在是真正的幸福结局。未来不幸的代码: document.addEventListener('wheel', function (e) { e.preventDefault(); // 不要使用滚动条 PivotPoint.Point.x = diagram.pointerPosition.x; PivotPoint.Point.y = diagram. pointerPosition.y; var zoom = diagram.getZoomFactor(); zoom -= e.deltaY / 15; if(zoom > 70 && zoom
【解决方案2】:

我假设您覆盖滚动事件以实现缩放功能。您需要在事件侦听器中获得的事件对象上调用 preventDefault 函数。

编辑: 您的事件侦听器是被动的,因为滚动事件侦听器通常会破坏用户体验。将其注册为非被动:

document.addEventListener('wheel', function (e) {
    var zoom = diagram.getZoomFactor();
    zoom -= e.deltaY / 35;
    if(zoom > 70 && zoom < 200 )
    {
        diagram.setZoomFactor(zoom);
    }
    e.preventDefault();
}, {passive: false});

【讨论】:

  • 您应该添加代码示例才能成为答案..
  • 我会留下评论,但我目前没有所需的声誉积分。我没有留下任何代码,因为他没有提供sn-p让我插入代码。
  • 对不起,我刚刚编辑了帖子。有我的活动代码
  • 您是否尝试过使用已注释的 e.preventDefault 呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
相关资源
最近更新 更多