Vue全局添加水印

ops/2024/10/21 0:13:44/

1.创建warterMark.js

javascript">/*水印配置*/
//声明 
let watermark = {}
//水印配置 
let setWatermark = (str1, str2, str3) => {let id = '1.23452384164.123412415'// 移除水印 判断if (document.getElementById(id) !== null) {document.body.removeChild(document.getElementById(id))}//创建画布let createCanvas = document.createElement('canvas')// 设置canvas画布大小createCanvas.width = 280 //宽度createCanvas.height = 220 //高度//创建Context2D对象作为2D渲染的上下文。let Context2D = createCanvas.getContext('2d')/*水印样式调整配置*/Context2D.font = '16px Vedana' //水印文字大小Context2D.fillStyle = '#000' //水印颜色 HEX格式,可使用red 或者rgb格式// 平移并斜着展示整个水印Context2D.translate(createCanvas.width / 2, createCanvas.height / 2)Context2D.rotate(-Math.PI / 6)// 第一段文字(较长)Context2D.fillText(str1, -Context2D.measureText(str1).width / 2, 0)// 第二段文字(较短)Context2D.font = '16px Vedana' // 可根据需要调整第二段文字的大小Context2D.fillText(str2, -Context2D.measureText(str2).width / 2, 30)// 第三段文字Context2D.font = '14px Vedana' // 可根据需要调整第三段文字的大小Context2D.fillText(str3, -Context2D.measureText(str3).width / 2, 60)//创建元素let createDiv = document.createElement('div')createDiv.id = id//水印默认设置createDiv.style.pointerEvents = 'none' //水印层事件穿透 让水印不阻止交互事件createDiv.style.top = '0px' //水印顶部距离createDiv.style.left = '0px' //水印左侧距离createDiv.style.opacity = '0.05' //水印透明度createDiv.style.position = 'fixed' //水印定位createDiv.style.zIndex = '100000' //水印样式优先显示createDiv.style.width = document.documentElement.clientWidth - 100 + 'px' //水印宽度createDiv.style.height = document.documentElement.clientHeight - 100 + 'px' //水印高度createDiv.style.background = 'url(' + createCanvas.toDataURL('image/png') + ') left top repeat' //水印显示(关键代码)document.body.appendChild(createDiv) //在指定元素节点的最后一个子节点之后添加节点return id
}// 此方法只允许调用一次
watermark.set = (str1, str2, str3) => {let id = setWatermark(str1, str2, str3)//设置间隔setInterval(() => {if (document.getElementById(id) === null) {id = setWatermark(str1, str2, str3)}}, 500)//改变大小时执行window.onresize = () => {setWatermark(str1, str2, str3)}
}export default watermark

2.在App.vue中引入

javascript">import Watermark from "../src/utils/warterMark";
//需要在watch里监听路由的变化从而重新加载水印watch: {$route(to, from) {//我是直接通过本地存储取得数据进行水印加载的也可以自定义let userObj = JSON.parse(localStorage.getItem("userInfo"));let companyName = userObj.tenantName;let userName = userObj.userName;let timer = userObj.loginDate.match(/^\d{4}-\d{2}-\d{2}/)[0];this.$nextTick(function () {//Watermark.set(companyName, userName, timer); //使用本地存储中的数据渲染Watermark.set('水印1', '水印2', '水印3'); //自定义数据渲染});},},//需要在页面加载完成后进行水印加载mounted() {let userObj = JSON.parse(localStorage.getItem("userInfo"));let companyName = userObj.tenantName;let userName = userObj.userName;let timer = userObj.loginDate.match(/^\d{4}-\d{2}-\d{2}/)[0];// Watermark.set(companyName, userName, timer); //使用本地存储中的数据渲染Watermark.set('水印1', '水印2', '水印3'); //自定义数据渲染},

http://www.ppmy.cn/ops/18940.html

相关文章

Web3D在电商行业的应用:开启沉浸式购物新纪元!

随着科技的不断进步,电子商务领域也在不断探索新的技术手段,以提供更加优质、便捷的购物体验。其中,Web3D技术的兴起,为电子商务带来了革命性的变化,开启了沉浸式购物的新纪元。 Web3D技术是一种在网页上呈现三维立体图…

计算机网络实验——学习记录五(TCP协议2)

一、TCP协议重传机制 TCP协议是一种面向连接、可靠的传输层协议。为了保证数据的可靠传输,TCP采用数据包重传的机制来应对网络传输过程中可能出现的丢包、错包和乱序等问题。 TCP协议的重传包括超时重传、快速重传、带选择确认SACK的重传和重复SACK重传四种。 二、…

Linux下基本指令-掌握

目录 为什么要学命令行 Linux下基本指令-掌握 ls 指令 pwd命令 cd 指令 touch指令 mkdir指令(重要): rmdir指令 && rm 指令(重要): man指令(重要): cp指…

分享一个网站实现永久免费HTTPS访问的方法

免费SSL证书作为一种基础的网络安全工具,以其零成本的优势吸引了不少网站管理员的青睐。要实现免费HTTPS访问,您可以按照以下步骤操作: 一、 选择免费SSL证书提供商 选择一个提供免费SSL证书的服务商。如JoySSL,他们是国内为数不…

泰坦尼克号乘客生存情况预测分析2

泰坦尼克号乘客生存情况预测分析1 泰坦尼克号乘客生存情况预测分析2 泰坦尼克号乘客生存情况预测分析3 泰坦尼克号乘客生存情况预测分析总 背景描述 Titanic数据集在数据分析领域是十分经典的数据集,非常适合刚入门的小伙伴进行学习! 泰坦尼克号轮船的…

香港BTC、ETH现货ETF同时通过,对行业意义几何?

香港比美国更快一步通过以太坊现货 ETF。 2024 年 4 月 15 日,香港嘉实国际资产管理有限公司(Harvest Global Investments)今天宣布,得到香港证监会的原则上批准,将推出两大数字资产(比特币及以太坊&#…

【网络通信】初探网络层次结构(OSI七层网络模型)

随着信息技术的飞速发展,网络通信已经成为现代社会不可或缺的一部分。网络通信的实现离不开网络协议栈的支持,而网络协议栈则是由多个层次组成的。这些层次各自承担着不同的任务,共同构成了网络通信的基石。本文将对网络通信中的各类层进行详…

视频批量剪辑新纪元:轻松调整音频采样率,一键实现高效视频处理!

视频剪辑已成为我们日常生活和工作中不可或缺的一部分。然而,面对大量的视频文件,如何高效地进行批量剪辑,同时又能轻松调整音频采样率,成为了许多视频制作人员、自媒体从业者、教育者和学生的共同需求。 第一步,进入…