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+iview实现文件上传
Nov 17 Vue.js
vue 插槽简介及使用示例
Nov 19 Vue.js
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
如何实现vue的tree组件
Dec 03 Vue.js
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 Vue.js
vue 在单页面应用里使用二级套嵌路由
Dec 19 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
浅析vue中的nextTick
Dec 28 Vue.js
vue实现防抖的实例代码
Jan 11 Vue.js
Vue过滤器(filter)实现及应用场景详解
Jun 15 Vue.js
vue项目打包后路由错误的解决方法
Apr 13 Vue.js
详解Vue3使用axios的配置教程
Apr 29 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
一个简洁的多级别论坛
2006/10/09 PHP
使用PHP的日期与时间函数技巧
2008/04/24 PHP
php中日期加减法运算实现代码
2011/12/08 PHP
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
JS动态创建元素的两种方法
2016/04/20 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
详解webpack babel的配置
2018/01/09 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
Python Scrapy多页数据爬取实现过程解析
2020/06/12 Python
如何理解python对象
2020/06/21 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
小学新教师培训方案
2014/02/03 职场文书
质量承诺书范文
2014/03/27 职场文书
拓展策划方案
2014/06/03 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
公务员个人年终总结
2015/02/12 职场文书
个人原因辞职信模板
2015/05/13 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS