当前位置:首页 > VUE

vue实现水印效果

2026-01-18 02:08:40VUE

实现水印效果的几种方法

在Vue中实现水印效果可以通过多种方式,以下是几种常见的方法:

使用CSS背景图

通过CSS的background-image属性可以实现简单的水印效果。定义一个包含水印文本的SVG或PNG图像,将其设置为背景图。

<template>
  <div class="watermarked"></div>
</template>

<style>
.watermarked {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><text x='50%' y='50%' font-size='20' fill='rgba(0,0,0,0.1)' text-anchor='middle' transform='rotate(-45, 100, 100)'>WATERMARK</text></svg>");
  background-repeat: repeat;
}
</style>

使用Canvas动态生成水印

通过Canvas动态生成水印,可以灵活调整水印内容、颜色、角度等属性。

vue实现水印效果

<template>
  <div ref="watermarkContainer"></div>
</template>

<script>
export default {
  mounted() {
    this.generateWatermark();
  },
  methods: {
    generateWatermark() {
      const canvas = document.createElement('canvas');
      canvas.width = 200;
      canvas.height = 200;
      const ctx = canvas.getContext('2d');
      ctx.font = '20px Arial';
      ctx.fillStyle = 'rgba(0, 0, 0, 0.1)';
      ctx.textAlign = 'center';
      ctx.textBaseline = 'middle';
      ctx.translate(100, 100);
      ctx.rotate(-Math.PI / 4);
      ctx.fillText('WATERMARK', 0, 0);

      const watermarkUrl = canvas.toDataURL();
      this.$refs.watermarkContainer.style.backgroundImage = `url(${watermarkUrl})`;
      this.$refs.watermarkContainer.style.backgroundRepeat = 'repeat';
    }
  }
}
</script>

使用第三方库

可以使用第三方库如vue-watermark来快速实现水印效果。

安装:

vue实现水印效果

npm install vue-watermark

使用:

<template>
  <vue-watermark :text="watermarkText" :opacity="0.1" :width="200" :height="200" :rotate="-45">
    <div>你的内容</div>
  </vue-watermark>
</template>

<script>
import VueWatermark from 'vue-watermark';

export default {
  components: {
    VueWatermark
  },
  data() {
    return {
      watermarkText: 'WATERMARK'
    };
  }
}
</script>

防止水印被移除

为了增强水印的防篡改性,可以通过MutationObserver监听DOM变化,确保水印被移除后能重新添加。

mounted() {
  this.generateWatermark();
  this.observeWatermark();
},
methods: {
  observeWatermark() {
    const targetNode = this.$refs.watermarkContainer;
    const config = { attributes: true, childList: true, subtree: true };
    const callback = (mutationsList) => {
      for (const mutation of mutationsList) {
        if (mutation.type === 'childList' || mutation.type === 'attributes') {
          this.generateWatermark();
        }
      }
    };
    const observer = new MutationObserver(callback);
    observer.observe(targetNode, config);
  }
}

总结

以上方法可以根据需求选择适合的实现方式。CSS背景图适合简单场景,Canvas动态生成适合需要灵活调整的场景,第三方库适合快速集成。通过MutationObserver可以增强水印的防篡改性。

标签: 水印效果
分享给朋友:

相关文章

vue实现吸附效果

vue实现吸附效果

Vue实现吸附效果的方法 吸附效果通常指页面滚动时,某个元素固定在特定位置(如顶部或底部)。以下是几种实现方式: 使用CSS的position: sticky 通过CSS的sticky定位实现吸附效…

css制作卷边效果

css制作卷边效果

使用伪元素和渐变实现卷边效果 通过CSS伪元素和线性渐变可以模拟纸张卷边的视觉效果。这种方法不需要额外元素,仅通过::before或::after伪元素实现。 .element { posit…

css3制作立体效果

css3制作立体效果

使用 transform 属性实现立体旋转 通过 transform-style: preserve-3d 和 rotateX/Y/Z 实现 3D 空间变换: .container { t…

jquery 效果

jquery 效果

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。jQuery 提供了丰富的效果(Effects)功能,可以轻松实现元素的动态显…

jquery效果

jquery效果

jQuery 动画效果 jQuery 提供了多种内置动画效果,可用于实现平滑的页面交互。常用的方法包括 show()、hide()、toggle()、fadeIn()、fadeOut()、slideU…

h5所能实现的效果

h5所能实现的效果

H5能实现的效果 H5(HTML5)作为最新的HTML标准,具备强大的功能和丰富的API支持,能够实现多种现代Web应用效果。以下是H5的主要能力分类: 多媒体支持 H5原生支持音频和视频播放,无需…