You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制SVG水平平移(仅缩放级别1时生效)

解决SVG平移权限控制问题

核心是通过自定义beforePan回调函数,根据当前缩放级别动态限制平移方向:

function beforePan(oldPan, newPan) {
  // 获取当前缩放级别
  const currentZoom = window.panZoom.getZoom();
  
  // 缩放级别为1时,禁止左右平移(锁定x轴),保留上下平移权限
  if (currentZoom === 1) {
    return {
      x: oldPan.x,
      y: newPan.y
    };
  }
  
  // 缩放级别大于1时,允许全方向平移
  return newPan;
}

// 初始化svgPanZoom(保持原有配置,beforePan使用上面的函数)
window.panZoom = svgPanZoom('#limit-svg', {
  zoomEnabled: true,
  controlIconsEnabled: true,
  minZoom: 1,
  maxZoom: 10,
  beforePan: beforePan
});

逻辑说明

  • 当缩放级别严格等于1时,强制让新的x轴平移位置和旧位置一致,彻底锁死左右移动;y轴则保留计算后的新位置,允许上下滑动查看SVG的垂直内容。
  • 一旦缩放级别超过1,直接返回新的平移坐标,恢复全方向的平移权限。

内容的提问来源于stack exchange,提问作者Gustavo De Cinque Caléfi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 17:39:53