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 $router和$route的区别详解
Dec 02 Vue.js
基于vuex实现购物车功能
Jan 10 Vue.js
Vue仿Bibibili首页的问题
Jan 21 Vue.js
vue+echarts实现中国地图流动效果(步骤详解)
Jan 27 Vue.js
vue-video-player 断点续播的实现
Feb 01 Vue.js
如何封装Vue Element的table表格组件
Feb 06 Vue.js
vue组件的路由高亮问题解决方法
May 11 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
vue的项目如何打包上线
Apr 13 Vue.js
解决vue-router的beforeRouteUpdate不能触发
Apr 14 Vue.js
vue3.0 数字翻牌组件的使用方法详解
Apr 20 Vue.js
vue/cli 配置动态代理无需重启服务的方法
May 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中jpgraph类库的使用介绍
2013/08/08 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
JavaScript 变量基础知识
2009/11/07 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
JS常用函数使用指南
2014/11/23 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
django中send_mail功能实现详解
2018/02/06 Python
Django学习教程之静态文件的调用详解
2018/05/08 Python
浅谈Pandas 排序之后索引的问题
2018/06/07 Python
python抖音表白程序源代码
2019/04/07 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
python随机生成库faker库api实例详解
2019/11/28 Python
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
致标枪运动员加油稿
2014/02/15 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
违反交通法规检讨书
2014/09/10 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
老员工辞职信范文
2015/05/12 职场文书
付款证明格式范文
2015/06/19 职场文书
2019年警察入党转正申请书最新范文
2019/09/03 职场文书
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL