nodejs
<template>
<div class="watermark-container">
<canvas ref="watermarkCanvas" class="watermark-canvas"></canvas>
<div class="content">
<!-- 这里是您的页面内容 -->
<slot></slot>
</div>
</div>
</template>
<script>
export default {
mounted() {
this.drawWatermark();
window.addEventListener('scroll', this.drawWatermark);
window.addEventListener('resize', this.drawWatermark);
},
beforeDestroy() {
window.removeEventListener('scroll', this.drawWatermark);
window.removeEventListener('resize', this.drawWatermark);
},
methods: {
drawWatermark() {
const canvas = this.$refs.watermarkCanvas;
const context = canvas.getContext('2d');
context.clearRect(0, 0, canvas.width, canvas.height);
// 设置水印样式
context.font = '20px Arial';
context.fillStyle = 'rgba(0, 0, 0, 0.1)';
context.rotate((-20 * Math.PI) / 180);
const text = 'Your Watermark Text';
// 在画布上绘制水印
for (let i = 0; i < window.innerWidth; i += 200) {
for (let j = 0; j < window.innerHeight; j += 100) {
context.fillText(text, i, j);
}
}
},
},
};
</script>
<style>
.watermark-container {
position: relative;
}
.watermark-canvas {
position: absolute;
top: 0;
left: 0;
pointer-events: none;
z-index: 1000;
}
.content {
position: relative;
z-index: 1;
}
</style>
cdn<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue@2.6.1-dev.js"></script>
</head>
<body>
<div id="app">
<watermark>
<div>
<!-- 这里是您的页面内容 -->
<h1>Hello, World!</h1>
</div>
</watermark>
</div>
<script>
// 定义水印组件
Vue.component('watermark', {
mounted() {
this.drawWatermark();
window.addEventListener('scroll', this.drawWatermark);
window.addEventListener('resize', this.drawWatermark);
},
beforeDestroy() {
window.removeEventListener('scroll', this.drawWatermark);
window.removeEventListener('resize', this.drawWatermark);
},
methods: {
drawWatermark() {
const canvas = this.$refs.watermarkCanvas;
const context = canvas.getContext('2d');
context.clearRect(0, 0, canvas.width, canvas.height);
// 设置水印样式
context.font = '20px Arial';
context.fillStyle = 'rgba(0, 0, 0, 0.1)';
context.rotate((-20 * Math.PI) / 180);
const text = 'Your Watermark Text';
// 在画布上绘制水印
for (let i = 0; i < window.innerWidth; i += 200) {
for (let j = 0; j < window.innerHeight; j += 100) {
context.fillText(text, i, j);
}
}
},
},
template: `
<div class="watermark-container">
<canvas ref="watermarkCanvas" class="watermark-canvas"></canvas>
<div class="content">
<slot></slot>
</div>
</div>
`
});
new Vue({
el: '#app'
});
</script>
<style>
.watermark-container {
position: relative;
}
.watermark-canvas {
position: absolute;
top: 0;
left: 0;
pointer-events: none;
z-index: 1000;
}
.content {
position: relative;
z-index: 1;
}
</style>
</body>
</html>
网友回复


