vue设置水印

news/2024/12/23 6:58:53/

水印图例

1.新建Watermark.js 文件

javascript">const watermark = {}const setWatermark = (text, sourceBody) => {const id =Math.random() * 10000 +'-' +Math.random() * 10000 +'/' +Math.random() * 10000if (document.getElementById(id) !== null) {document.body.removeChild(document.getElementById(id))}const can = document.createElement('canvas')can.width = 200 // 设置水印之间的左右间距can.height = 150 // 设置水印之间的上下间距const cans = can.getContext('2d')cans.rotate((-20 * Math.PI) / 180)cans.font = '15px Vedana'cans.fillStyle = 'rgba(0, 0, 0, .3)'  //水印颜色cans.textAlign = 'left'cans.textBaseline = 'Middle'cans.fillText(text, can.width / 20, can.height)const wateDiv = document.createElement('div')wateDiv.id = idwateDiv.className = 'watermarkClass'wateDiv.style.pointerEvents = 'none'wateDiv.style.background ='url(' + can.toDataURL('image/png') + ') left top repeat'if (sourceBody) {wateDiv.style.width = '100%'wateDiv.style.height = '100%'sourceBody.appendChild(wateDiv)} else {wateDiv.style.top = '3px'wateDiv.style.left = '0px'wateDiv.style.position = 'fixed'wateDiv.style.zIndex = '100000'wateDiv.style.width = document.documentElement.clientWidth + 'px'wateDiv.style.height = document.documentElement.clientHeight + 'px'document.body.appendChild(wateDiv)}return id
}/***  该方法只允许调用一次*  @param:*  @text == 水印内容*  @sourceBody == 水印添加的位置,不传就是body* */
watermark.set = (text, sourceBody) => {const domArr = Array.from(document.getElementsByClassName('watermarkClass'))for (let i = 0; i < domArr.length; i++) {const element = domArr[i]// element.parentNode.removeChild(element);element.remove()}if (text === '') {return}setWatermark(text, sourceBody)// let id = setWatermark(text, sourceBody);// setInterval(() => {//   if (document.getElementById(id) === null) {//     id = setWatermark(text, sourceBody);//   }// }, 2000);// window.onresize = () => {//   setWatermark(text, sourceBody);// };
}export default watermark

2. 在vue 文件使用

javascript"><script>
import Watermark from './Watermark'  //引入水印文件
export default {name: 'app',mounted () {Watermark.set(水印名称)// 添加水印名称}
}
</script><style></style>


http://www.ppmy.cn/news/1517389.html

相关文章

Datawhale X 李宏毅苹果书 AI夏令营(深度学习进阶)task3

批量归一化 其实归一化简单一点理解就类似于我们学过的数学中的每个数值减去平均值除以标准差。 神经网络中的批量归一化&#xff08;Batch Normalization&#xff0c;BN&#xff09;就是其中一个“把山铲平”的想法。不要小看优化这个问题&#xff0c;有时候就算误差表面是凸…

[mysql]mysql的演示使用

1&#xff1a;show databases 这里第一个information_schema代表的是数据库的基本系统信息&#xff0c;数据库名称&#xff0c;表的名称&#xff0c;存储权限 第二个是mysql&#xff0c;保存的是我们数据库运行的时候需要的系统信息&#xff0c;比如数据库文件夹 当前的字库集…

es的简易dsl语句

数据模式为文档&#xff0c;_doc格式数据&#xff0c;也就是json 数据 es根据_id查询数据 GET /index_name/_doc/document_id es根据_id删除数据 DELETE /index_name/_doc/document_id es查询mapping结构 GET /index_name/_mappings es查询index下所有数据&#xff08;突破100…

APO 新发版支持Skywalking Agent接入

自APO开源以来&#xff0c;社区成员询问APO是否支持Skywalking Agent&#xff0c;以避免已使用Skywalking的应用在测试发版过程中需要重新部署探针。APO利用OpenTelemetry生态&#xff0c;通过skywalkingreceiver实现Skywalking Trace到OTEL Trace的转换&#xff0c;为已经使用…

java后端开发流程

使用springboot和vue3框架完成开发&#xff0c;并进行配置 1.数据库建立 使用navicat数据库管理工具&#xff0c;数据可视化工具&#xff0c;首先建立连接&#xff0c;然后开始建立字段&#xff0c;根据数据需求的类型&#xff0c;加入字段&#xff0c;之后通过字段添加数据在…

Xor Sigma Problem

Xor Sigma Problem 首先可以转化成前缀异或和去考虑&#xff0c;那么也就是求任意两个前缀异或和相加的值&#xff0c;可以一位位的来求&#xff0c;每位最后的答案即是0和1出现次数的乘积。 代码&#xff1a; #include <bits/stdc.h> #define int long long #defin…

100128-批量获取视频音频时长添加到文件名中支持子孙文件夹下操作-UI

程序功使用环境▶适用的系统环境说明&#xff1a;win7以上64位win系统注意&#xff1a;win32位系统/mac系统需要额外定制▶使用期限&#xff1a;无需注册、不绑电脑、无时间限制▶如何安装&#xff1a;不需要安装程序功能说明▶子文件夹穿透&#xff1a;支持▶支持的文件格式&a…

Swift Evolution: 塑造现代编程语言的活体实验室

标题&#xff1a;Swift Evolution: 塑造现代编程语言的活体实验室 Swift Evolution 是一个持续进行的过程&#xff0c;它定义了 Swift 语言的发展路线图和改进机制。自从 Swift 语言在 2014 年被苹果公司推出以来&#xff0c;它就以其安全性、性能和易用性迅速赢得了开发者的青…