From 7821781f200f0e10b4b2f672f974907a215f2975 Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Tue, 27 Jun 2023 09:05:25 +0800 Subject: [PATCH] =?UTF-8?q?Feat=EF=BC=9A=E9=BC=A0=E6=A0=87=E6=BB=9A?= =?UTF-8?q?=E8=BD=AE=E7=BC=A9=E6=94=BE=E6=97=B6=E9=BB=98=E8=AE=A4=E4=BB=A5?= =?UTF-8?q?=E9=BC=A0=E6=A0=87=E5=BD=93=E5=89=8D=E4=BD=8D=E7=BD=AE=E4=B8=BA?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E8=BF=9B=E8=A1=8C=E7=BC=A9=E6=94=BE=EF=BC=8C?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E9=80=9A=E8=BF=87=E9=85=8D=E7=BD=AE=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E8=AF=A5=E7=89=B9=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/constants/defaultOptions.js | 2 ++ simple-mind-map/src/core/view/View.js | 28 ++++++++++++------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/simple-mind-map/src/constants/defaultOptions.js b/simple-mind-map/src/constants/defaultOptions.js index 6d039b57..2dd5368d 100644 --- a/simple-mind-map/src/constants/defaultOptions.js +++ b/simple-mind-map/src/constants/defaultOptions.js @@ -14,6 +14,8 @@ export const defaultOpt = { themeConfig: {}, // 放大缩小的增量比例 scaleRatio: 0.2, + // 鼠标缩放是否以鼠标当前位置为中心点,否则以画布中心点 + mouseScaleCenterUseMousePosition: true, // 最多显示几个标签 maxTag: 5, // 导出图片时的内边距 diff --git a/simple-mind-map/src/core/view/View.js b/simple-mind-map/src/core/view/View.js index 5caaccc2..76eeace2 100644 --- a/simple-mind-map/src/core/view/View.js +++ b/simple-mind-map/src/core/view/View.js @@ -60,29 +60,37 @@ class View { }) // 放大缩小视图 this.mindMap.event.on('mousewheel', (e, dir, event, isTouchPad) => { + let { + customHandleMousewheel, + mousewheelAction, + mouseScaleCenterUseMousePosition, + mousewheelMoveStep + } = this.mindMap.opt + // 是否自定义鼠标滚轮事件 if ( - this.mindMap.opt.customHandleMousewheel && - typeof this.mindMap.opt.customHandleMousewheel === 'function' + customHandleMousewheel && + typeof customHandleMousewheel === 'function' ) { - return this.mindMap.opt.customHandleMousewheel(e) + return customHandleMousewheel(e) } - if ( - this.mindMap.opt.mousewheelAction === CONSTANTS.MOUSE_WHEEL_ACTION.ZOOM - ) { + // 鼠标滚轮事件控制缩放 + if (mousewheelAction === CONSTANTS.MOUSE_WHEEL_ACTION.ZOOM) { + let cx = mouseScaleCenterUseMousePosition ? e.clientX : undefined + let cy = mouseScaleCenterUseMousePosition ? e.clientY : undefined switch (dir) { // 鼠标滚轮,向上和向左,都是缩小 case CONSTANTS.DIR.UP: case CONSTANTS.DIR.LEFT: - this.narrow(e.clientX, e.clientY) + this.narrow(cx, cy) break // 鼠标滚轮,向下和向右,都是放大 case CONSTANTS.DIR.DOWN: case CONSTANTS.DIR.RIGHT: - this.enlarge(e.clientX, e.clientY) + this.enlarge(cx, cy) break } - } else { - let step = this.mindMap.opt.mousewheelMoveStep + } else {// 鼠标滚轮事件控制画布移动 + let step = mousewheelMoveStep if (isTouchPad) { step = 5 }