vue实现盖章
在Vue中实现盖章效果
在Vue中实现盖章效果可以通过CSS动画和动态组件来实现。以下是一个常见的实现方法:
使用CSS动画实现盖章效果
创建一个盖章动画效果,可以通过CSS的transform和transition属性实现:

<template>
<div class="stamp-container">
<div
class="stamp"
:class="{ 'stamp-active': isStamping }"
@click="handleStamp"
>
盖章
</div>
<div class="stamp-result" v-if="showStamp">
<img src="stamp-image.png" alt="印章">
</div>
</div>
</template>
<script>
export default {
data() {
return {
isStamping: false,
showStamp: false
}
},
methods: {
handleStamp() {
this.isStamping = true
setTimeout(() => {
this.isStamping = false
this.showStamp = true
}, 500)
}
}
}
</script>
<style>
.stamp {
width: 100px;
height: 100px;
border-radius: 50%;
background-color: red;
color: white;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
transition: transform 0.3s ease;
}
.stamp-active {
transform: scale(0.9);
}
.stamp-result {
position: absolute;
animation: stampEffect 0.5s ease;
}
@keyframes stampEffect {
0% {
transform: scale(1.2);
opacity: 0.5;
}
100% {
transform: scale(1);
opacity: 1;
}
}
</style>
使用SVG实现动态印章
如果需要更复杂的印章效果,可以使用SVG:

<template>
<div>
<button @click="stamp = !stamp">盖章</button>
<svg v-if="stamp" width="200" height="200">
<circle cx="100" cy="100" r="80" fill="none" stroke="red" stroke-width="5"/>
<text x="100" y="110" text-anchor="middle" fill="red" font-size="24">公司印章</text>
<text x="100" y="140" text-anchor="middle" fill="red" font-size="16">2023</text>
</svg>
</div>
</template>
<script>
export default {
data() {
return {
stamp: false
}
}
}
</script>
实现位置固定的印章
如果需要将印章固定在文档的特定位置:
<template>
<div class="document-container">
<div class="document-content">
<!-- 文档内容 -->
</div>
<div class="stamp-fixed" v-if="showStamp">
<div class="stamp-image"></div>
</div>
</div>
</template>
<style>
.document-container {
position: relative;
}
.stamp-fixed {
position: absolute;
right: 50px;
bottom: 50px;
}
.stamp-image {
width: 150px;
height: 150px;
background-color: rgba(255, 0, 0, 0.1);
border: 3px solid red;
border-radius: 50%;
}
</style>
使用第三方库实现复杂印章
对于更专业的印章效果,可以考虑使用第三方库如fabric.js:
import { fabric } from 'fabric'
export default {
mounted() {
const canvas = new fabric.Canvas('canvas')
const stamp = new fabric.Circle({
radius: 50,
fill: 'transparent',
stroke: 'red',
strokeWidth: 3,
left: 100,
top: 100
})
canvas.add(stamp)
}
}
以上方法可以根据具体需求选择使用,从简单的CSS动画到复杂的SVG或Canvas实现,都能在Vue中创建出满意的盖章效果。






