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>
网友回复