​ 在 Vue 3 中,你可以使用 Composition API 来创建一个响应式的 SVG 组件,该组件可以根据鼠标的滚动变化来放大或缩小 SVG。以下是一个简单的例子:

<template>
  <svg
    :width="svgWidth"
    :height="svgHeight"
    @wheel="handleWheel"
  >
    <!-- SVG内容 -->
  </svg>
</template>
 
<script setup>
import { ref } from 'vue';
 
const svgWidth = ref(500);
const svgHeight = ref(500);
 
function handleWheel(event) {
  event.preventDefault();
  const scaleFactor = 1.1; // 定义缩放因子
  const currentScale = svgWidth.value / 500; // 假设初始尺寸为 500x500
 
  if (event.deltaY < 0) {
    // 鼠标向上滚动,放大
    svgWidth.value = svgWidth.value + (svgWidth.value * scaleFactor);
    svgHeight.value = svgHeight.value + (svgHeight.value * scaleFactor);
  } else {
    // 鼠标向下滚动,缩小
    svgWidth.value = svgWidth.value - (svgWidth.value * scaleFactor);
    svgHeight.value = svgHeight.value - (svgHeight.value * scaleFactor);
  }
}
</script>

​ 在这个例子中,我们创建了一个响应式的 SVG 元素,它的 width 和 height 属性由 svgWidth 和 svgHeight 状态管理。当用户滚动鼠标滚轮时, handleWheel 函数会被调用,根据滚动的方向来动态调整 SVG 的大小。如果滚轮向上移动,SVG 会变大;如果滚轮向下移动,SVG 会变小。