vue中使用 canvas给页面添加水印

vue实现水印功能 在页面里添加水印,一种是特定页面加水印,那么本页面加水印功能即可,用CSS/JavaScript都可以实现,另一种是全局都加水印,这种可以考虑某些页面不需要加水印,在路由守卫或者其他地方去掉即可。 写在前面,水印的实现原理:创建一个canvas,画一个客户端高x客户端宽的画布,里面画满水印,并将其的层级z-index设置最高,使其一直显示在界面的最上方。 阅读详情

封装公共添加水印的方法:

//  utils/watermark.js

/**入参:
	@text: 传入水印需要展示的文本;
	@renderDom:要给哪个元素加水印,默认body;
*/
var watermark = {}
var setWatermark = function(text,renderDom=document.body){
    var id = '1.23345566.3333344';
    if(document.getElementById(id)!==null){
    };
    // 创建一个画布
    var can = document.createElement('canvas');
    // 设置画布的长宽
    can.width = 400;
    can.height=400;
    var cans = can.getContext('2d');
    // 旋转角度
    cans.rotate(-30*Math.PI/180);
    cans.font='20px Vedana'
    // 设置填充绘画的颜色、渐变或者模式
    cans.fillStyle = '#eee';
    // 设置文本内容的对齐方式
    cans.textAlign = 'left';
    // 设置在绘制文本时使用过的当前文本基线
    cans.textBaseline = 'Middle';
    cans.shadowColor = rgba(0,0,0,1);
    cans.shadowOffsetX=1;
    cans.shadowOffsetY = 1;
    cans.shadowBlur = 3;
    // 在画布上绘制填色的文本(输出的文本,开始绘制文本的X/Y轴坐标)
    cans.fillText(text,-can.width/16,cans.height/2);
    const rectAttr = renderDom.getBoundingClientRect();
    var div = document.createElement('div')
    div.id = id;
    div.style.pointerEvents = 'none';
    div.style.position = 'absolute';
    div.style.top = rectAttr.top+'px';
    div.style.left = rectAttr.left+'px';
    div.style.zIndex = '1';
    div.style.opacity = '0.3';
    div.style.width = rectAttr.width+'px';
    div.style.height = rectAttr.height+'px';
    div.style.background='url(' + can.toDataURL('image/png') + ')-24px top repeat';
    if(rectAttr.height===0){
        return;
    }
    renderDom.appendChild(div)
    return id;
}
// 一个页面中该方法只允许调用一次
watermark.set=function(text,renderDom){
    var id = setWatermark(text,renderDom)
    if(!id){
    setTimeout(function(){watermark.set(text,renderDom)},0)
    }
    window.onresize=function(){
    	setWatermark(text,renderDom)
    }
}
export default watermark;

使用

// .vue文件
<div id="container"> </div>
import watermark from '@/utils/watermark';
export default{
    mounted(){
        this.$nextTick(()=>{
            let {operNo,operName} = this.operatorInfo
            watermark.set(operNo+operName,document.getElementById('container'))
        })
    }
}
Stata极简生存分析 1. 导入数据 webuse drugtr,clear *webuse -- Use dataset from Stata website stset,clear *上一行命令导入进来的数据是“生存时间数据”,会比最原始的数据多四列,这一行命令的目的是重置为原始数据,之所以这样做,是为了显示数据处理的全部过程 codebook drug codebook studytime codebook died codebook age *codebook -- Describe data contents 2. 阅读详情

相关推荐

【matlab】使用alexnet进行特征提取

1.下载alexnet工具箱 在命令栏输入alexnet,若不报错说明已经安装,若出现错误按照提示去下载工具箱; 下载地址:https://ww2.mathworks.cn/matlabcentral/fileexchange/59133-deep-learning-toolbox-model-for-alexnet-network (1)需要先注册(十分简单),登陆,下载; (2)下载完成之后,...

jingjingliang1995的博客 5837

vue实现添加水印(给页面添加背景水印、给图片添加水印)

vue实现添加水印(给页面添加背景水印、给图片添加水印)

weixin_41897680的博客 7960

Qlib上手学习记录

Qlib 是一个面向人工智能的量化投资平台,其目标是通过在量化投资中运用AI技术来发掘潜力、赋能研究并创造价值,从探索投资策略到实现产品化部署。该平台支持多种机器学习建模范式,包括有监督学习、市场动态建模以及强化学习等。真的是走了很多弯路step 1. 使用 ananconda 建立环境,要主要必须是 python 3.8失败的下了以后 进入 glib folder 后执行是会报错的,不管你还什么source 都一样,整了很久使用前最好看下这个。

chenchihwen的专栏 3095

如何在vue项目中页面上添加水印?

是 JavaScript 中的一个内置对象,它提供了一种监视 DOM(文档对象模型)树变化的能力。允许开发者注册一个回调函数,当观察的 DOM 节点或子节点发生变化时,会触发这个回调函数。这些变化可以包括节点的添加、移除、属性的变化、文本内容的改变等。使用可以监视特定的 DOM 元素或整个文档,并在相关变化发生时执行相应的操作。这对于实时监测页面变化、自动化测试、实现响应式 UI 等场景非常有用。下面是一个简单的示例,演示如何使用// 目标元素// 创建一个 MutationObserver 实例。

广漂程序猿DevinRock 2253

压电陶瓷传感器避坑指南:实测阻抗匹配对信号输出的影响(附示波器调试技巧)

本文深入探讨压电陶瓷传感器在工业振动监测中的阻抗匹配问题,通过等效电路模型和实测数据揭示负载阻抗对信号输出的关键影响。文章提供从元件选型到示波器调试的完整解决方案,特别强调100kΩ以上负载阻抗的重要性,并分享JFET缓冲器设计和PCB布局的实用技巧,帮助工程师避免信号失真和输出不稳定问题。

ooo22的博客 509

星链V3的2048条波束与1Tbps:多波束相控阵的工程代价

低轨卫星通信的容量提升,核心在于多波束相控阵天线的空间复用能力。相控阵通过控制大量天线单元的相位,可在同一阵面同时形成多条独立指向的波束,从而在有限频谱内成倍提升系统容量。星链V3宣称的2048条波束与1 Tbps汇聚吞吐量,正是基于这一原理:更多波束意味着更高的频率复用系数和更灵活的资源调度。但工程实现并非免费午餐,数字背后是供电、散热、重量、发射成本及运维复杂度的急剧攀升。从用户侧看,更精细的波束也带来切换频繁、低仰角衰减等新挑战。本文从多波束相控阵的基础原理出发,拆解波束形成、频谱复用和动态调度的工程

weixin_33462167的博客 342

vue项目使用canvas实现水印功能

Vue项目在页面添加水印功能 创建watermark.js文件 let watermark = {} let setWatermark = (str) => { let id = '1.23452384164.123412416'; if (document.getElementById(id) !== null) { document.body.removeChild(document.getElementById(id)); } //创建一个画布 let can

weixin_40079913的博客 1253

2023年全国职业院校技能大赛 网络系统管理服务模块 Linux部分讲解

网络系统管理,Linux,服务部署,Chinaskills,2023国赛

weixin_62926639的博客 1542

简单实现vue项目给页面添加水印

在需要水印的页面中,在页面的created,mounted生命节点调用此接口生成想要的水印。将此js文件放到项目某个目录,我这边是src/utils目录里。然后在main.js中引入此工具文件。

qq_38599266的博客 861

国债期货的日线趋势跟踪策略实现(基于backtrader框架)

通过backtrader框架,我们可以轻松地实现国债期货的日线趋势跟踪策略,并进行回测和验证。通过这种策略,我们可以尝试捕捉国债期货价格的短期趋势,并根据趋势的方向进行交易决策。backtrader提供了许多内置的指标、订单类型和其他功能,可以帮助你进一步优化和改进你的策略。它提供了丰富的工具和功能,使我们能够快速实现和验证我们的交易想法。方法中,我们根据当前价格和前一天的价格判断趋势的方向,并根据趋势的变化进行买入或卖出操作。然后,我们设置了初始资金和交易手续费,并将我们定义的策略。来跟踪每日的收盘价。

NisyPhilosophy的博客 393

fast-lio系列改进版本

2.回环检测的优化结果,更新到FAST-LIO2的当前帧位姿中,幷进行ikdtree的重构,进而更新submap。其它的效果还不清楚,实测lio部分稳定性很好。用fast-lio_slam就很稳定。融合了fast-lio2和sc-pgo,两部分分开运行,SC-PGO从FAST-LIO2节点获取里程计和激光雷达点云主题。的作者kim在FAST-LIO2的基础上,添加SC-PGO模块,通过加入ScanContext全局描述子,进行回环修正,SC-PGO模块与FAST-LIO2解耦,非常方便,很优秀的工作。

z1872385的博客 3180

vue项目加水印

vue项目加水印

furenqiang的博客 5218

【EMC专题】为什么芯片规格书ESD性能中看不到MM(机器放电模型)

器件级ESD包括三种类型,HBM人体放电模型、MM机械放电模型和CDM元件充电模型。但在芯片规格书中为什么只见到HBM模型与CDM模型,却没有看到MM模型的数据?

一点硬件 447

vue页面添加水印和去除水印

vue页面添加水印

睡大觉的博客 1181

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

vue实现给页面添加水印

vue实现给页面添加水印

weixin_64141611的博客 3958

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Vue Canvas添加水印

项目生成公司水印是很普遍的需求,下面是vue项目生产水印的方法。话不多说,复制粘贴就可以马上解决你的需求。 /** 水印添加方法 */ let setWatermark = (str1, str2) => { let id = '1.23452384164.123412415' if (document.getElementById(id) !== null) { document.body.removeChild(document.getElementById(id))

草莓味的青 961

vue项目 添加全局水印或某个指定页面水印 源码

vue项目的页面添加水印,效果如图 index.vue import watermark from "./watermark"; mounted() { watermark.set('我是水印啦'); }, destroyed() { watermark.set(''); //为了清除页面返回时,其它页面也有水印 }, watermark.js let watermark = {} let setWatermark = (str) => { let id = '..

怎样过不是过的博客 1708

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

专为 Vue 设计的水印组件,可添加文本或图片水印。创建一个水印组件 WatermarkIndex.vue。在页面中引入 水印组件。

lryh_的博客 1315

vue3前端页面添加水印

前端增加水印,删除水印时重新加载页面。

Dreamer 1048

vue -- watermark水印添加方法

作者:蛙哇 原文链接:https://segmentfault.com/a/1190000022055867 来源:segmentfault 前言 项目生成公司水印是很普遍的需求,下面是vue项目生产水印的方法。话不多说,复制粘贴就可以马上解决你的需求。 步骤1 创建watermark.js文件。目录结构 /** 水印添加方法 */ let setWatermark = (str1, str2) => { let id = '1.23452384164.123412..

qq_36396822的博客 2902

vue项目为每个页面添加水印

vue项目为每个页面添加水印

Weiverly的博客 1168

work02_vue页面打印水印

前言 项目生成公司水印是很普遍的需求,下面是vue项目生产水印的方法。话不多说,复制粘贴就可以马上解决你的需求 ①. vue页面打印水印[一] ①. 创建watermark.js文件 /** 水印添加方法 */ let setWatermark = (str1, str2) => { let id = '1.23452384164.123412415' if (document.getElementById(id) !== null) { document.body.re.

所得皆惊喜 1107

Element UI使用Canvas实现动态文字图片水印

使用Element UI实现水印,需要创建一个自定义组件,比如一个遮罩层,固定在页面上,包含水印文字。这个组件可以用position: fixed覆盖整个视口,pointer-events: none让下面的元素可以交互。然后,在组件内部用Canvas绘制水印,并作为背景图。

weixin_50963012的博客 587

vue动态添加水印封装

实现原理:创建一个由canvas生成的水印图片,作为一个新div节点的背景图,并定位挂载到所指定加水印的区域元素下。说明:支持同一页面多个区域设置不同水印(id唯一!前言:需求是在指定区域里添加多段自定义水印。水印封装watermark.js。

YueMiaoL的博客 251

vue实现页面添加水印

vue实现页面添加水印

LBJSagiri的博客 515

vue项目中页面添加水印

vue项目中页面添加水印

zhao_ren的博客 1537

vue项目 添加页面水印

参考该文章 https://zhuanlan.zhihu.com/p/532679109。新建 waterMark.vue 组件。新建 watermark.js 文件。直接在需要的页面引入该组件即可。

qq_43227422的博客 883
上一篇: flex布局
下一篇: vue中:将列表导出成excel表格、图片下载
不能懒鸭
博客等级 码龄7年 53粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值