vue 使用class创建和清除水印的示例代码


Posted in Vue.js onDecember 25, 2020

页面添加水印的方法有很多,以下举例使用class定义的方法进行水印内容渲染:

1、新建文件:WatermarkClass.js

export default class WatermarkClass {
  constructor({id="watermarkID", str = "", fontSize = 18, width = 400, height = 400, fillStyle="#333333", opacity = 1 }) {
    this.id = id;
    this.str = str;
    this.fontSize = fontSize;
    this.width = width;
    this.height = height;
    this.fillStyle = fillStyle
    this.opacity = opacity;

  }

  // 绘制水印
  draw() {
   if (document.getElementById(this.id) !== null) {
    document.body.removeChild(document.getElementById(this.id));
   }

   const canvas = document.createElement("canvas");
   // 设置canvas画布大小
   canvas.width = this.width;
   canvas.height = this.height;

   const ctx = canvas.getContext("2d");
   ctx.rotate(-(15 * Math.PI) / 180); // 水印旋转角度
   ctx.font = `${this.fontSize}px Vedana`;
   ctx.fillStyle = this.fillStyle;
   ctx.textAlign = "center";
   ctx.textBaseline = "middle";
   this.str.split(",").forEach((item, index) => {
    ctx.fillText(item, canvas.width / 2, canvas.height / 2 + (index * this.fontSize + 10)); // 水印在画布的位置x,y轴
   });

   const div = document.createElement("div");
   div.id = this.id;
   div.style.pointerEvents = "none";
   div.style.top = "30px";
   div.style.left = "10px";
   div.style.opacity = this.opacity;
   div.style.position = "fixed";
   div.style.zIndex = "999999";
   div.style.width = `${document.documentElement.clientWidth}px`;
   div.style.height = `${document.documentElement.clientHeight}px`;
   div.style.background = `url(${canvas.toDataURL("image/png")}) left top repeat`;
   document.body.appendChild(div);
  }

  setOptions({fontSize = 18, width = 300, height = 300, opacity = 1, str = ""}) {
   this.fontSize = fontSize;
   this.width = width;
   this.height = height;
   this.fillStyle = fillStyle
   this.opacity = opacity;
   this.str = str;
   this.draw();
  }

  // 绘制
  render() {
   this.draw();
   window.onresize = () => {
    this.draw();
   };
  }

  // 移除水印
  removeWatermark() {
   if (document.getElementById(this.id) !== null) {
    document.body.removeChild(document.getElementById(this.id));
   }
  }
 }

2、在页面种引入使用:

import watermarkClass from "@/libs/watermarkClass";
export default {
 name: "App",
 mounted: function () {
  this.initWatermark()
 },
 methods: {
  initWatermark() {
   // 方法一
   let watermark = new watermarkClass({
    id: "watermarkID",
    str: "紫藤萝-watermarkClass",
    fontSize: 20,
    width: 300,
    height: 200,
    fillStyle: "#dddddd",
    opacity: 0.4,
   });
   watermark.render();
   // 5秒后,清除水印
   setTimeout(() => {
    watermark.removeWatermark();
   }, 5000);
  }
 },
};

以上就是vue 使用class创建和清除水印的示例代码的详细内容,更多关于vue 创建和清除水印的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
vue+vant实现购物车全选和反选功能
Nov 17 Vue.js
springboot+vue实现文件上传下载
Nov 17 Vue.js
vue使用echarts图表自适应的几种解决方案
Dec 04 Vue.js
浅析vue中的nextTick
Dec 28 Vue.js
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
Vue2.x-使用防抖以及节流的示例
Mar 02 Vue.js
Vue全局事件总线你了解吗
Feb 24 Vue.js
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 Vue.js
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 Vue.js
VUE之图片Base64编码使用ElementUI组件上传
Apr 09 Vue.js
vue特效之翻牌动画
Apr 20 Vue.js
基于vue+echarts数据可视化大屏展示的实现
Dec 25 #Vue.js
vue3使用vue-count-to组件的实现
Dec 25 #Vue.js
vue+openlayers绘制省市边界线
Dec 24 #Vue.js
vue项目中openlayers绘制行政区划
Dec 24 #Vue.js
Vue+penlayers实现多边形绘制及展示
Dec 24 #Vue.js
Vue使用鼠标在Canvas上绘制矩形
Dec 24 #Vue.js
vue绑定class的三种方法
Dec 24 #Vue.js
You might like
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
PHP开发框架kohana3 自定义路由设置示例
2014/07/14 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
2015/08/04 Javascript
理解javascript对象继承
2016/04/17 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
node.js的exports、module.exports与ES6的export、export default深入详解
2017/10/26 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
如何解决vue在ios微信"复制链接"功能问题
2020/03/26 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
Python函数学习笔记
2008/10/07 Python
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
python源文件的字符编码知识点详解
2021/03/04 Python
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
DJI全球:DJI Global
2021/03/15 全球购物
啤酒销售实习自我鉴定
2013/09/24 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
解决Python字典查找报Keyerror的问题
2021/05/26 Python
Nginx实现负载均衡的项目实践
2022/03/18 Servers
以下牛机,你有几个
2022/04/05 无线电