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-drawer-layout实现手势滑出菜单栏
Nov 19 Vue.js
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
Dec 01 Vue.js
vue+echarts实现中国地图流动效果(步骤详解)
Jan 27 Vue.js
Vue多选列表组件深入详解
Mar 02 Vue.js
详解vue3中组件的非兼容变更
Mar 03 Vue.js
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
vue实现无缝轮播效果(跑马灯)
May 14 Vue.js
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 Vue.js
解决vue自定义组件@click点击失效问题
Apr 30 Vue.js
Vue ECharts实现机舱座位选择展示功能
May 15 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仿discuz分页效果代码
2008/10/02 PHP
解析strtr函数的效率问题
2013/06/26 PHP
PHP中session变量的销毁
2014/02/27 PHP
php获取根域名方法汇总
2014/10/28 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
基于jquery & json的省市区联动代码
2012/06/26 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
Python列表生成器的循环技巧分享
2015/03/06 Python
Tornado 多进程实现分析详解
2018/01/12 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
Python转换时间的图文方法
2019/07/01 Python
手把手教你Python yLab的绘制折线图的画法
2019/10/23 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
python编写实现抽奖器
2020/09/10 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
欧舒丹比利时官网:L’OCCITANE比利时
2017/04/25 全球购物
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
简述安装Slackware Linux系统的过程
2012/05/08 面试题
信息学院毕业生自荐信范文
2014/03/04 职场文书
爱情保证书大全
2014/04/29 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书
银行培训心得体会范文
2016/01/09 职场文书