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 相关文章推荐
vuex的数据渲染与修改浅析
Nov 26 Vue.js
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
如何在vue中使用HTML 5 拖放API
Jan 14 Vue.js
vue element el-transfer增加拖拽功能
Jan 15 Vue.js
如何让vue长列表快速加载
Mar 29 Vue.js
vue实现水波涟漪效果的点击反馈指令
May 31 Vue.js
vue实现锚点定位功能
Jun 29 Vue.js
Vue图片裁剪组件实例代码
Jul 02 Vue.js
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
vue配置型表格基于el-table拓展之table-plus组件
Apr 12 Vue.js
vue3语法糖内的defineProps及defineEmits
Apr 14 Vue.js
el-table-column 内容不自动换行的解决方法
Aug 14 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学习 函数 课件
2008/06/15 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
php eval函数一句话木马代码
2015/05/21 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
详解Vue方法与事件
2017/03/09 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
JS实现简单获取最近7天和最近3天日期的方法
2018/04/18 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
Python实现堆排序的方法详解
2016/05/03 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
python 获取字典键值对的实现
2020/11/12 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
html5 css3 动态气泡按钮实例演示
2012/12/02 HTML / CSS
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
高二化学教学反思
2014/01/30 职场文书
社区平安建设方案
2014/05/25 职场文书
材料化学专业求职信
2014/07/15 职场文书
党支部三会一课计划
2014/09/24 职场文书
防灾减灾标语
2014/10/07 职场文书
限期整改通知书
2015/04/22 职场文书
食堂卫生管理制度
2015/08/04 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书