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+element-ui的项目中封装dialog组件
Dec 11 Vue.js
Vue实现简单购物车功能
Dec 13 Vue.js
vue监听滚动事件的方法
Dec 21 Vue.js
jenkins自动构建发布vue项目的方法步骤
Jan 04 Vue.js
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
vue实现简易计算器功能
Jan 20 Vue.js
浅谈Vue开发人员的7个最好的VSCode扩展
Jan 20 Vue.js
vue.js实现点击图标放大离开时缩小的代码
Jan 27 Vue.js
Vue常用API、高级API的相关总结
Feb 02 Vue.js
VUE实现吸底按钮
Mar 04 Vue.js
教你部署vue项目到docker
Apr 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 和 XML: 使用expat函数(一)
2006/10/09 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
解读ES6中class关键字
2017/11/20 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
Vue SSR 即时编译技术的实现
2020/05/06 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
Python通过select实现异步IO的方法
2015/06/04 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
Sanic框架流式传输操作示例
2018/07/18 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
django中使用POST方法获取POST数据
2019/08/20 Python
python tkinter控件布局项目实例
2019/11/04 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
苹果Mac升级:MacSales.com
2017/11/20 全球购物
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
社区关爱留守儿童活动方案
2014/08/22 职场文书
机关干部三严三实心得体会
2014/10/13 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
小学语文教学反思范文
2016/03/03 职场文书
vue+elementui 实现新增和修改共用一个弹框的完整代码
2021/06/08 Vue.js
宝塔更新Python及Flask项目的部署
2022/04/11 Python
idea下配置tomcat避坑详解
2022/04/12 Servers