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页面刷新导致数据丢失的解决方案
Dec 10 Vue.js
全面解析Vue中的$nextTick
Dec 24 Vue.js
vue调用微信JSDK 扫一扫,相册等需要注意的事项
Jan 03 Vue.js
vue实现防抖的实例代码
Jan 11 Vue.js
vue3.0封装轮播图组件的步骤
Mar 04 Vue.js
vue项目实现分页效果
Mar 24 Vue.js
vue如何批量引入组件、注册和使用详解
May 12 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
vue Element-ui表格实现树形结构表格
Jun 07 Vue.js
如何vue使用el-table遍历循环表头和表体数据
Apr 26 Vue.js
vue3不同环境下实现配置代理
May 25 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 读取文件的正确方法
2009/04/29 PHP
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
php中adodbzip类实例
2014/12/08 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
2016/01/28 Javascript
jQuery实现遍历复选框的方法示例
2017/03/06 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
ES10 特性的完整指南小结
2019/03/04 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
2019/03/26 Javascript
JSONP 的原理、理解 与 实例分析
2020/05/16 Javascript
python 默认参数问题的陷阱
2016/02/29 Python
Python工程师面试必备25条知识点
2018/01/17 Python
python使用turtle库绘制时钟
2020/03/25 Python
基于python历史天气采集的分析
2019/02/14 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
快速了解Python开发环境Spyder
2020/06/29 Python
Python collections模块的使用方法
2020/10/09 Python
Django中ORM的基本使用教程
2020/12/22 Python
研究生求职推荐信范文
2013/11/30 职场文书
《去年的树》教学反思
2014/04/11 职场文书
质量整改通知单
2015/04/21 职场文书
起诉书范文
2015/05/20 职场文书
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android