当前位置:首页 > VUE

vue实现网页水印

2026-01-07 00:21:47VUE

Vue 实现网页水印的方法

使用 canvas 生成水印背景

通过 canvas 动态生成水印图案,将其作为背景图添加到目标元素或整个页面。这种方法灵活且支持自定义文本、旋转角度和透明度。

// 在 Vue 组件中定义方法
methods: {
  generateWatermark(text, color = 'rgba(180, 180, 180, 0.3)', angle = -20) {
    const canvas = document.createElement('canvas')
    canvas.width = 200
    canvas.height = 150
    const ctx = canvas.getContext('2d')

    ctx.font = '16px Arial'
    ctx.fillStyle = color
    ctx.rotate(angle * Math.PI / 180)
    ctx.fillText(text, 10, 80)

    return canvas.toDataURL('image/png')
  }
}

全局指令实现水印

创建 Vue 指令可复用水印功能,通过指令参数传递配置项。

// 注册全局指令
Vue.directive('watermark', {
  inserted(el, binding) {
    const { text, color, angle } = binding.value || {}
    const url = this.generateWatermark(text || '保密资料', color, angle)

    el.style.backgroundImage = `url(${url})`
    el.style.backgroundRepeat = 'repeat'
  },
  methods: {
    generateWatermark() { /* 同前文方法 */ }
  }
})

// 使用方式
<div v-watermark="{ text: '内部文件', color: 'rgba(120,120,120,0.1)' }"></div>

防删除水印方案

为防止用户通过开发者工具删除水印,可采用 MutationObserver 监控 DOM 变化。

// 在 mounted 钩子中实现
mounted() {
  const watermark = document.createElement('div')
  watermark.className = 'global-watermark'
  // 设置水印样式...

  document.body.appendChild(watermark)

  const observer = new MutationObserver(() => {
    if (!document.querySelector('.global-watermark')) {
      document.body.appendChild(watermark)
    }
  })
  observer.observe(document.body, { childList: true })
}

动态水印方案

对于需要显示用户信息的水印,可结合 Vue 响应式数据实现动态更新。

data() {
  return {
    watermarkText: `用户ID: ${userID}`,
    watermarkConfig: {
      color: 'rgba(100,100,100,0.2)',
      angle: -15
    }
  }
},
watch: {
  watermarkText(newVal) {
    this.updateWatermark(newVal)
  }
}

CSS-only 简易方案

对于简单场景,可用纯 CSS 实现基础水印效果。

<div class="watermarked-container">
  <div class="watermark">样本水印</div>
  <!-- 页面内容 -->
</div>

<style>
.watermarked-container {
  position: relative;
}
.watermark {
  position: absolute;
  pointer-events: none;
  opacity: 0.2;
  transform: rotate(-15deg);
  z-index: 9999;
}
</style>

每种方案适用于不同场景,canvas 方案适合需要精细控制的场景,指令方式便于复用,MutationObserver 方案提供防删除保护,CSS 方案实现最简单。可根据实际需求选择或组合使用。

vue实现网页水印

标签: 水印网页
分享给朋友:

相关文章

vue实现网页切换

vue实现网页切换

Vue 实现网页切换的方法 在 Vue 中实现网页切换通常可以通过以下几种方式完成,具体取决于项目需求和路由管理方式。 使用 Vue Router Vue Router 是 Vue.js 官方提供的…

vue 水印 实现

vue 水印 实现

Vue 水印实现方法 使用 canvas 动态生成水印 在 Vue 组件中通过 canvas 绘制水印,并将其作为背景图片插入到目标元素中。这种方法灵活性高,支持动态调整水印内容、角度和透明度。…

vue实现水印组件

vue实现水印组件

Vue 水印组件实现 基础水印组件实现 创建一个基础水印组件,通过 props 接收文本、颜色、大小等参数: <template> <div class="watermark-…

css网页尾部制作

css网页尾部制作

制作CSS网页尾部的步骤 设计尾部布局 使用<footer>标签定义尾部区域,确保包含版权信息、联系方式、社交媒体链接等必要元素。通过CSS设置背景色、内边距和边框样式增强视觉效果。 基…

css制作响应网页

css制作响应网页

响应式网页设计基础 使用CSS制作响应式网页的核心是让页面能够根据不同设备的屏幕尺寸自动调整布局和样式。主要通过媒体查询(Media Queries)、弹性布局(Flexbox)和网格布局(Grid)…

html css制作静态网页

html css制作静态网页

HTML 和 CSS 制作静态网页 创建基本 HTML 结构 使用 HTML 定义网页的结构和内容。以下是一个基本的 HTML 模板: <!DOCTYPE html> <html…