目录

  • 方案一
    • tool.js
    • index.vue
    • 效果
  • 方案二
    • watermark.js
    • index.vue
    • 效果
  • 最后

方案一

可能会报错,解决办法,下面网址

地址

tool.js

创建utils => tool.js

export default {//tool.jsaddWaterMark() {const strArr = `${localStorage.getItem("loginUserName")}${localStorage.getItem("logunUserPhone").slice(7, 11)}[${new Date()}]`;let ctx = document.createElement("canvas");ctx.width = 250;ctx.height = 100;ctx.style.display = "none";let cans = ctx.getContext("2d");cans.rotate((-20 * Math.PI) / 180);cans.font = "12px Microsoft YaHei";cans.fillStyle = "rgba(17, 17, 17, 0.20)";cans.textAlign = "left";cans.textBaseline = "Middle";cans.fillText(strArr, 0, 100);cans.save();return ctx.toDataURL();}
}

index.vue

可能会报错,解决办法,下面网址
https://blog.csdn.net/weixin_38711005/article/details/117069530<template><div class="content" :style="{backgroundImage:`url(${orgBackground})`}">aaa</div>
</template><script>
import tool from "@/utils/tool";
export default {data () {return {orgBackground: "",};},name: "test",mounted () {localStorage.setItem("loginUserName", "ruan");localStorage.setItem("logunUserPhone", "123456");//实际只需要一行代码this.orgBackground = tool.addWaterMark();//监听dom属性改变重新生成水印(如果页面有变化需要去监听dom)// const org = document.querySelector(".content");// const options = {//     attributes: true,//     childList: true,//     subtree: true,// };// const observer = new MutationObserver((mutationList) => {// this.orgBackground = tool.addWaterMark();// });// observer.observe(org, options);},// methods: {//     // 点击去除水印加这个去除方法//     remove () {//         this.orgBackground = null //     }// }
};
</script><style scoped>
.content {position: relative;width: 100%;height: 100vh;
}
</style>

效果

方案二

watermark.js

创建utils => 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 = document.createElement('canvas');//设置画布的长宽can.width = 120;can.height = 120;let cans = can.getContext('2d');//旋转角度cans.rotate(-15 * Math.PI / 180);cans.font = '18px Vedana';//设置填充绘画的颜色、渐变或者模式cans.fillStyle = 'rgba(200, 200, 200, 0.40)';//设置文本内容的当前对齐方式cans.textAlign = 'left';//设置在绘制文本时使用的当前文本基线cans.textBaseline = 'Middle';//在画布上绘制填色的文本(输出的文本,开始绘制文本的X坐标位置,开始绘制文本的Y坐标位置)cans.fillText(str, can.width / 8, can.height / 2);let div = document.createElement('div');div.id = id;div.style.pointerEvents = 'none';div.style.top = '30px';div.style.left = '0px';div.style.position = 'fixed';div.style.zIndex = '100000';div.style.width = document.documentElement.clientWidth + 'px';div.style.height = document.documentElement.clientHeight + 'px';div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat';document.body.appendChild(div);return id;
}// 该方法只允许调用一次
watermark.set = (str) => {let id = setWatermark(str);setInterval(() => {if (document.getElementById(id) === null) {id = setWatermark(str);}}, 500);window.onresize = () => {setWatermark(str);};
}export default watermark;

index.vue

<template><div>aaa</div>
</template>
<script>
import Watermark from '@/utils/watermark';  //路径不要写错export default {mounted: function () {Watermark.set("添加水印内容")}
}
</script>

效果

最后

感觉文章好的话记得点个心心和关注和收藏,有错的地方麻烦指正一下,如果需要转载,请标明出处,多谢!!!

前端Vue页面加水印方法(带源码)相关推荐

  1. 电影购票系统(小小影院),SpringBoot+vue 结构启动项目(带源码,不收费)

    文章目录 功能简介 部署须知 可能遇到的错误 部分运行截图 参考文档 功能简介 SpringBoot+SpringSecurity+MyBatis-Plus 框架的前后端电影项目,前端使用vue+el ...

  2. python图片批量处理器批量加水印重命名源码

    wx供重浩:创享日记 对话框发送:python图片批处理 免费获取完整源码源文件+说明文档+可执行文件等 在PyCharm中运行<图片批量处理器>即可进入如图1所示的系统主界面.在该界面中 ...

  3. vue插件瀑布流vue-masonry(带源码)

    目录 插件官网 下载 全局挂载 main.js中 属性 实例 效果 最后 插件官网 官网1 官网2 下载 npm install vue-masonry --save 全局挂载 main.js中 im ...

  4. autojs-识图点击完整方法带源码及使用方法

    单纯的click无法全适配 游戏里不能用控件点击 今天给大家带来识图点击的方法 简单好用通杀所有分辨率 首先是获取截屏权限 (识图点击必须获取截屏权限否则无法识图) if (!requestScree ...

  5. 使用ajax获取后台数据怎么打印,我用ajax获取后台数据并展示在前端页面的方法【源码】...

    <我用ajax获取后台数据并展示在前端页面的方法[源码]>由会员分享,可在线阅读,更多相关<我用ajax获取后台数据并展示在前端页面的方法[源码](2页珍藏版)>请在人人文库网 ...

  6. 浅谈前端实现页面加载进度条以及 nprogress.js 的实现

    以前在 Vue 的项目用了 nprogress 这个插件,一直对于其如何得知加载进度充满好奇,最近又看到了「前端如何实现页面加载进度条」这个问题,今天周六恰好一探究竟.以下仅为一家之言,如有异议,欢迎 ...

  7. 图片加水印怎么弄?这些图片加水印方法分享给你

    相信很多小伙伴平常会喜欢将自己拍摄的作品上传到社交平台上与他人分享吧.然而有时会遇到自己辛苦拍摄的视频或者图片被他人盗用,甚至是获利的情况.其实想要避免自己的作品被他人盗用,我们可以在作品上面添加专属 ...

  8. 创意被盗用,这3个加水印方法,让照片刻上我们专属印记

    一般我们为了保护自己的图片不被别人盗用,都会选择在图片上刻上专属印记.那么便是加水印方法,它包含两种:文字水印和图片水印.想知道怎么给图片添加水印吗?其实有很多种法子可以做到,下面就由我来分享这3个简 ...

  9. Vue 页面加载闪现出现{{xxx}}问题

    Vue 页面加载闪现出现{{xxx}}问题,猜测应该是犹豫网络延迟或者什么原因导致加载vue.js CSS中 [v-cloak] {display: none; } HTML中 <div v-c ...

最新文章

  1. java .classpath配置_轻松玩转Java配置的Classpath
  2. Kubernetes 弹性伸缩全场景解析 (一):概念延伸与组件布局
  3. weka不能使用Apriori/FPGrowth
  4. 虚拟化容器Docker的安全性讨论
  5. 深入浅出自定义标签(二)生成javascript
  6. Java类集-SortedSet接口
  7. ssm(Spring+Spring mvc+mybatis)Spring配置文件——applicationContext.xml
  8. Kali Linux与Ubuntu的ssh服务
  9. 【Erlang新手成长日记】Erlang开源项目推荐
  10. javascript基础-函数
  11. Noip模拟题解题报告
  12. 2021-03-05 网站资源数据搜集
  13. (使用python+adb)能实现王者荣耀自动刷金币?
  14. 微信8.0.3:做重了群公告,再也不能@所有人了!
  15. Linux 搭建NodeBB社区,搭建CAS登录认证平台,实现Nodebb接入企业CAS认证(二)
  16. java小组项目口号,小组口号霸气押韵大全(精选60句)
  17. 阿里云数据及api服务
  18. java 1st 2nd 3rd 4th_1st(3rd)
  19. 群晖域名解析出现错误?别慌,排查原因有步骤
  20. 百度网盘网页版——文件排序

热门文章

  1. shell编程之iptables
  2. C/C++语言ODBC连接SqlServer数据库
  3. CMMI认证是什么?为什么这些IT类企业都在申请?
  4. order by a desc,b desc与order by a,b desc的区别
  5. c++中的继承机制(Derived Classes)
  6. 详解Tensor用法
  7. valgrind检测内存泄漏,gperftools,memwatch和性能优化Messy_Test
  8. BlockingQueue是什么?
  9. 【论文笔记】ERNIE-VIL: KNOWLEDGE ENHANCED VISION-LANGUAGE REPRESENTATIONS THROUGH SCENE GRAPH
  10. 简单的java爬虫程序