vue给页面添加水印

vue给页面添加水印

在这里插入图片描述
在这里插入图片描述

<template>
  <div class="home">
    <router-view />
  </div>
</template>

<script>
  export default {
    components: {},
    data() {
      return {}
    },
    computed: {},
    mounted() {
      // 获取需要观察的节点
      const target = document.querySelector('.home')
      // 观察器配置
      const config = {
        attributes: true, // 监听目标元素属性的变化
        childList: true, // 监听目标原型子节点的变化
        subtree: false, // 是否观察后代的变化。默认false
      }
      // 创建观察器
      const observer = new MutationObserver(() => {
        // 获取背景图片
        const bgi = target?.style?.backgroundImage
        console.log('背景的值:', bgi)
        if (!bgi) {
          // 当背景被取消后,重新添加
          this.initWatermark()
        }
      })
      // 开始观察
      observer.observe(target, config)
      // 停止观察
      // observer.disconnect()
      this.initWatermark()
    },
    methods: {
      initWatermark() {
        // 创建一个canvas
        const canvas = document.createElement('canvas')
        // 设置画布的宽高
        canvas.width = 200
        canvas.height = 200
        // 获取画笔
        const ctx = canvas.getContext('2d')
        // 水印,水印实际上就是将文字添加到画布上
        ctx.font = '30px Arial' // 设置字体大小和字体
        ctx.rotate(-0.4) // 设置文字旋转角度

        // 创建实体水印
        ctx.fillStyle = 'rgba(0,0,0,.3)' // 颜色
        ctx.fillText('这是水印', canvas.width / 6, canvas.height / 2) // 设置显示文字和偏移量

        // 创建虚心水印
        // ctx.strokeStyle = 'rgba(0,0,0,.3)';
        // ctx?.strokeText('这是水印', canvas.width / 6, canvas.height / 2);

        // // 渐变水印
        // const gradient = ctx.createLinearGradient(0, 0, canvas.width, 0)
        // gradient.addColorStop(0, 'red')
        // gradient.addColorStop(0.5, 'yellow')
        // gradient.addColorStop(1, 'green')
        // ctx.fillStyle = gradient // 颜色
        // ctx.fillText('这是水印', canvas.width / 6, canvas.height / 2) // 设置显示文字和偏移量

        // 将画布转成图片
        const img = canvas.toDataURL()
        const main = document.querySelector('.home')
        main.style.backgroundImage = `url(${img})`
      },
    },
  }
</script>

<style lang="scss" scoped>
  .home {
  }
  .flex {
    display: flex;
  }
  .flex-s {
    display: flex;
    justify-content: space-between;
  }
</style>

相关推荐

  1. 【uniapp-小程序-video添加水印

    2024-04-21 02:48:01       27 阅读
  2. canvas实现照片添加水印

    2024-04-21 02:48:01       8 阅读
  3. vue用js 添加水印

    2024-04-21 02:48:01       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-21 02:48:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-21 02:48:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-21 02:48:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-21 02:48:01       20 阅读

热门阅读

  1. C# 语言类型(三)—数组/枚举类型/结构体

    2024-04-21 02:48:01       14 阅读
  2. 用爬虫玩转石墨文档

    2024-04-21 02:48:01       14 阅读
  3. C语言经典例题-20

    2024-04-21 02:48:01       17 阅读
  4. 【第一章 先导篇】1. 规范化的学习模型

    2024-04-21 02:48:01       11 阅读
  5. 东岸科技将赴港IPO,冲刺催收第一股

    2024-04-21 02:48:01       14 阅读
  6. 线程池的创建方式

    2024-04-21 02:48:01       15 阅读