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项目中企业微信使用js-sdk时config和agentConfig配置方式详解
Dec 15 Vue.js
Vue仿百度搜索功能
Dec 28 Vue.js
vue动态设置路由权限的主要思路
Jan 13 Vue.js
vue keep-alive的简单总结
Jan 25 Vue.js
学习 Vue.js 遇到的那些坑
Feb 02 Vue.js
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 Vue.js
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
Mar 01 Vue.js
详解Vue slot插槽
Nov 20 Vue.js
详解Vue项目的打包方式(生成dist文件)
Jan 18 Vue.js
Vue.js中v-for指令的用法介绍
Mar 13 Vue.js
vue中的可拖拽宽度div的实现示例
Apr 08 Vue.js
Vue 打包后相对路径的引用问题
Jun 05 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的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
php+ajax简单实现全选删除的方法
2016/12/06 PHP
JSON 数据格式介绍
2012/01/13 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
两种方法解决javascript url post 特殊字符转义 + & #
2016/04/13 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
详解python并发获取snmp信息及性能测试
2017/03/27 Python
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
商务考察邀请函范文
2014/01/21 职场文书
护士毕业生自我鉴定
2014/02/08 职场文书
跳蚤市场口号
2014/06/13 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
禁毒心得体会范文
2016/01/15 职场文书
公文写作:工伤事故分析报告怎么写?
2019/11/05 职场文书
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS