​ 在 Vue 3 中,可以通过监听滚动事件和调整 SVG 的视口属性来实现 SVG 的缩放。以下是一个简单的例子,展示了如何在鼠标滚动时改变 SVG 的大小:

<template>
  <div class="svg-container" @wheel="handleWheel">
    <svg :viewBox="viewBox">
      <!-- SVG内容 -->
      <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
    </svg>
  </div>
</template>
 
<script setup>
import { ref } from 'vue';
 
const viewBox = ref('0 0 100 100');
 
function handleWheel(event) {
  event.preventDefault();
  const scale = event.deltaY > 0 ? 1.1 : 0.9; // 根据滚轮方向来决定放大或缩小的比例
  const [x, y, width, height] = viewBox.value.split(' ').map(Number);
  const newWidth = width * scale;
  const newHeight = height * scale;
  viewBox.value = `${x} ${y} ${newWidth} ${newHeight}`;
}
</script>
 
<style>
.svg-container {
  width: 500px;
  height: 500px;
  overflow: hidden;
}
svg {
  width: 100%;
  height: 100%;
}
</style>

​ 在这个例子中,我们创建了一个带有 svg-container 类的 div 来包裹 SVG 元素,并且给这个 div 添加了一个鼠标滚动事件监听器 @wheel 。在 handleWheel 函数中,我们根据鼠标滚轮的滚动方向 (event.deltaY) 来决定是放大还是缩小 SVG,并且更新 viewBox 的值来改变 SVG 的视口大小。这样,当用户滚动鼠标时,SVG 将相应地放大或缩小。