Vue全局添加水印

news/2024/10/17 4:50:58/

首先创建一个js文件(shuiyin.js)

// 定义水印函数
const addWatermark = ({container = document.body, // 水印添加到的容器,默认为 bodywidth = "200px", // 水印 canvas 的宽度height = "100px", // 水印 canvas 的高度textAlign = "center", // 水印文字的对齐方式textBaseline = "middle", // 水印文字的基线font = "16px Microsoft Yahei", // 水印文字的字体fillStyle = "rgba(184, 184, 184, 0.6)", // 水印文字的填充样式content = "我是水印", // 水印文字的内容rotate = -30, // 水印文字的旋转角度zIndex = 10000, // 水印的 z-index 值
}) => {// 生成水印 canvasconst canvas = document.createElement("canvas");canvas.setAttribute("width", width);canvas.setAttribute("height", height);const ctx = canvas.getContext("2d");ctx.textAlign = textAlign;ctx.textBaseline = textBaseline;ctx.font = font;ctx.fillStyle = fillStyle;ctx.rotate((Math.PI / 180) * rotate);ctx.fillText(content, parseFloat(width) / 2, parseFloat(height) / 1);// 将 canvas 转换为 base64 URLconst base64Url = canvas.toDataURL("image/png");console.log(base64Url);const __wm = document.querySelector(".__wm");const watermarkDiv = __wm || document.createElement("div");const styleStr = `position: fixed;top: 0;left: 0;bottom: 0;right: 0;width: 100%;height: 100%;z-index: ${zIndex};pointer-events: none;background: url('${base64Url}') left top repeat;`;watermarkDiv.setAttribute("style", styleStr);watermarkDiv.classList.add("__wm");// 则创建一个 div 并设置样式和类名if (!__wm) {container.style.position = "relative";container.insertBefore(watermarkDiv, container.firstChild);}// 监听容器变化,当容器发生变化时重新调用 addWatermark 函数const { MutationObserver } = window;if (MutationObserver) {let mo = new MutationObserver(function () {const __wm = document.querySelector(".__wm");// 只在__wm元素变动才重新调用__canvasWMif ((__wm && __wm.getAttribute("style") !== styleStr) || !__wm) {// 避免一直触发mo.disconnect();mo = new MutationObserver(() => {});addWatermark({container: document.getElementById("app"),width: "200px",height: "100px",textAlign: "center",textBaseline: "middle",font: "16px Microsoft Yahei",fillStyle: "rgba(184, 184, 184, 0.3 )",content,rotate: -30,zIndex: 10000,});}});mo.observe(container, {attributes: true,subtree: true,childList: true,});}
};export default addWatermark;

main.js引入

import addWatermark from "@/utils/shuiyin";
Vue.use(addWatermark);

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

相关文章

系列五、GC垃圾回收【四大垃圾算法-复制算法】

一、堆的内存组成 二、复制算法 2.1、发生位置 复制算法主要发生在新生代,发生在新生代的垃圾回收也被叫做Minor GC。 2.2、 Minor GC的过程 复制>清空》交换 1、eden、from区中的对象复制到to区,年龄1 首先,当eden区满的时候会触发第一…

Unity 2021 LTS / Unity 2022 LTS New Shader Graph Node 参考样本

Shader Graph团队很高兴地宣布发布新的节点参考样本,现在可用于2021 LTS, 2022 LTS和未来的版本。 节点参考样本是超过140个Shader图形资源的集合。您可以将这些图用作参考,以了解每个节点的作用及其工作原理,而不是在项目中使用这些图。每个…

pwnable.kr--pwn游戏之fd

题目描述: 大致告诉我们研究的可能是Linux下的文件描述符。需要我们用ssh链接过去找到flag。于是我们就过去看看: 乍看情况有点像简单nc,我们尝试看看目录下都有什么: 看到flag,那么尝试输出呢? Permission…

宗老师团队国家工程-园区GIS应用

园区GIS底板 地理信息系统是XXX园区信息化建设的重要支撑系统,以其直观易懂的地图表现及强大的空间分析能力,在应用建设中需求非常强烈。园区GIS底板通过融合GIS引擎、数据治理和各类园区GIS图层形成园区的地理信息系统,支撑园区GIS资源的统…

通过制作llama_cpp的docker镜像在内网离线部署运行大模型

对于机器在内网,无法连接互联网的服务器来说,想要部署体验开源的大模型,需要拷贝各种依赖文件进行环境搭建难度较大,本文介绍如何通过制作docker镜像的方式,通过llama.cpp实现量化大模型的快速内网部署体验。 一、llam…

思维导图软件 Xmind mac中文版特点介绍

XMind 2022 mac是一款思维导图软件,可以帮助用户创建各种类型的思维导图和概念图。 XMind mac软件特点 - 多样化的导图类型:XMind提供了多种类型的导图,如鱼骨图、树形图、机构图等,可以满足不同用户的需求。 - 强大的功能和工具&…

到站上海!见证这座零碳园区的绿色低碳新选择

不知不觉中,科士达新能源的零碳足迹已遍布五洲四海,为全球各地,千行百业、千家万户,带去了源源不断的绿色能源和低碳新选择。再次启航,这一站,抵达上海世博园。 小机身,大配置,灵活适…

JavaScript红宝书第七章:迭代器与生成器

JavaScript红宝书第七章:迭代器与生成器 理解迭代迭代器模式可迭代对象可迭代协议什么是工厂函数?实现Iterator接口的内置类型什么是arguments?如何检查是否有迭代接口以及工厂函数 迭代器协议next方法自定义迭代器 提前终止迭代器 生成器定义yield可以…