在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将相应地放大或缩小。
