当前位置: 首页 > article >正文

vue 项目使用vue-watermark组件给页面添加满屏水印

  • vue-watermark

        专为 Vue 设计的水印组件,可添加文本或图片水印

npm install vue-watermark

注册为局部组件 

<template>
  <div id="app">
    <vue-watermark
      text="水印文字"
      :font-size="16"
      :line-height="24"
      :width="120"
      :height="80"
      :angle="-15"
      :opacity="0.2"
    />
  </div>
</template>

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

export default {
  name: 'App',
  components: {
    VueWatermark,
  },
}
</script>

注册为全局组件:

import VueWatermark from 'vue-watermark';
Vue.component('VueWatermark',VueWatermark)

要用的页面引用即可

    <vue-watermark
      text="水印文字"
      :font-size="16"
      :line-height="24"
      :width="120"
      :height="80"
      :angle="-15"
      :opacity="0.2"
    />

 

  • canvas 生成水印做背景图

创建一个水印组件 WatermarkIndex.vue

<template>
    <div class="watermark-container">
      <slot></slot>
      <div class="watermark" :style="watermarkStyle"></div>
    </div>
  </template>
  
  <script>
  export default {
    name: 'WatermarkIndex',
    props: {
      text: {
        type: String,
        default: 'Watermark'
      },
      fontSize: {
        type: Number,
        default: 16
      },
      color: {
        type: String,
        default: 'rgba(0, 0, 0, 0.1)'
      },
      angle: {
        type: Number,
        default: -20
      }
    },
    computed: {
      watermarkStyle() {
        return {
          backgroundImage: `url("${this.generateWatermarkImage()}")`,
          backgroundSize: `${this.fontSize * 5}px ${this.fontSize * 2}px`,
          backgroundRepeat: 'repeat',
          position: 'fixed',
          top: 0,
          left: 0,
          width: '100%',
          height: '100%',
          pointerEvents: 'none',
          zIndex: 9999
        }
      }
    },
    methods: {
      // 使用Canvas生成水印图像,并将其转换为Data URL,作为背景图像使用
      generateWatermarkImage() {
        const canvas = document.createElement('canvas')
        const ctx = canvas.getContext('2d')
  
        canvas.width = 200
        canvas.height = 100
  
        ctx.font = `${this.fontSize}px Arial`
        ctx.fillStyle = this.color
        ctx.textAlign = 'center'
        ctx.textBaseline = 'middle'
        ctx.translate(canvas.width / 2, canvas.height / 2)
        ctx.rotate((this.angle * Math.PI) / 180)
        ctx.fillText(this.text, 0, 0)
  
        return canvas.toDataURL()
      }
    }
  }
  </script>
  
  <style scoped>
  .watermark-container {
    position: relative;
    width: 100%;
    height: 100%;
  }
  </style>

在页面中引入 水印组件 

<template>
  <div>
    <Watermark text="Confidential" :fontSize="20" color="rgba(0, 0, 0, 0.2)" :angle="-30">
      <!-- 你的页面内容 -->
      <div>
        <h1>文本内容</h1>
      </div>
    </Watermark>
  </div>
</template>

<script>
import Watermark from '../components/WatermarkIndex.vue';

export default {
  components: {
    Watermark
  }
}
</script>


http://www.kler.cn/a/543094.html

相关文章:

  • Shell-基本命令与运算符
  • Golang GORM系列:GORM 高级查询教程
  • Java多线程——线程池的使用
  • 游戏引擎学习第98天
  • 2.11日学习总结
  • 本地部署DeepSeek Nodejs版
  • 计算机组成原理——中央处理器(九)
  • tp whereOr用法2
  • 链表的‘跑酷’:C++ list 如何在数据中自由穿梭?
  • IGBT工作原理
  • Barra多因子模型
  • 回归新系列——网络安全实操干货系列——Kali Linux新版本——Kali Purple实操指南——信息收集篇1——Nmap(其一)
  • AI赋能前端开发:加速你的职业晋升之路
  • 大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
  • 玩转状态模式
  • Linux下的进程切换与调度
  • Spark商品销售数据可视化分析系统 机器学习预测算法 讲解视频 论文 大数据毕业设计 Hadoop和Hive 销量预测✅
  • 【github】docker realtime
  • 探索RDMA技术:从基础到实践
  • 【Qt】定期清理程序
  • AI写代码工具赋能前端工程师,加速职业晋升
  • 二叉树详解
  • 对前端的技术进行分层
  • 关于FC设备Map 系统的一些需求思考
  • OpenBayes 教程上新 | 告别服务器繁忙,DeepSeek 一键部署教程上线!
  • 解锁电商数据宝藏:淘宝商品详情API实战指南