首页 > 其他分享 >Vue项目添加水印

Vue项目添加水印

时间:2022-10-12 18:35:57浏览次数:56  
标签:style Vue 水印 添加 let div document id

1.utils文件夹下创建canvas画布水印文件

utils/watermark.js

let watermark = {}

let setWatermark = (str) => {
  let id = '1.23452384164.123412416';

  if (document.getElementById(id) !== null) {
    document.body.removeChild(document.getElementById(id));
  }

  //创建一个画布
  let can = document.createElement('canvas');
  //设置画布的长宽,可以通过调节画布的宽高去设置水印分布的密度
  can.width = 300;
  can.height = 240;

  let cans = can.getContext('2d');
  //旋转角度
  cans.rotate(-15 * Math.PI / 150);
  cans.font = '18px Vedana';
  //设置填充绘画的颜色、渐变或者模式
  cans.fillStyle = 'rgba(200, 200, 200, 0.40)';
  //设置文本内容的当前对齐方式
  cans.textAlign = 'left';
  //设置在绘制文本时使用的当前文本基线
  cans.textBaseline = 'Middle';
  //在画布上绘制填色的文本(输出的文本,开始绘制文本的X坐标位置,开始绘制文本的Y坐标位置)
  cans.fillText(str, can.width / 6, can.height / 2);


  let div = document.createElement('div');
  div.id = id;
  div.style.pointerEvents = 'none';
  div.style.top = '30px';
  div.style.left = '0px';
  div.style.position = 'fixed';
  div.style.zIndex = '100000';
  div.style.width = document.documentElement.clientWidth + 'px';
  div.style.height = document.documentElement.clientHeight + 'px';
  div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat';
  document.body.appendChild(div);
  return id;
}

// 该方法只允许调用一次
watermark.set = (str) => {
  let id = setWatermark(str);
  setInterval(() => {
    if (document.getElementById(id) === null) {
      id = setWatermark(str);
    }
  }, 500);
  window.onresize = () => {
    setWatermark(str);
  };
}

export default watermark;

2.在main.js中导入水印文件,配置router.afterEach为页面添加水印

import store from './store'
//水印
import Watermark from '@/utils/watermark';



router.afterEach((item) => {
  if (item.name !== 'login') {    //判断是否为登录页面,水印的内容可自定义设置
    Watermark.set(`${store.state.user.nickName}${store.state.user.userName}`)
  }
})

 

标签:style,Vue,水印,添加,let,div,document,id
From: https://www.cnblogs.com/426jie/p/16785533.html

相关文章

  • 2022-10-12 vue+uniapp+echarts 使用记录
    第一步:安装echartsnpmiecharts第二步:在main.js引入echartsimportechartsfrom'echarts'Vue.prototype.$echarts=echarts第三步:在项目中使用<template>......
  • 2022-10-12 vue+uniapp+echarts 报错日志
    这里是vue+uniapp+echarts报错日志报错一:.initisundefined初始化图表失败,请检查你的echarts是否安装成功成功==》请检查你当前安装的版本是否过高,是==》降低版本(比......
  • Vue工程环境配置
    Vue1.vue-cli/webpack使用vue.js开发大型应用需要使用webpack打包工具,本节研究webpack的使用方法。Webpack是一个前端资源的打包工具,它可以将js、image、css等资源当......
  • Vue通过ref获取不到$refs
    原文地址:https://blog.csdn.net/weixin_41542329/article/details/124432644?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%......
  • vue首页白屏
    路由模式错误将路由模式mode设置成了history,默认hash;将其修改为hashdist文件引用路径错误打包后dist目录下文件的引用路径不对,因找不到文件而报错白屏修改config下i......
  • 给自己的博客园添加网抑云音乐播放器
    1.申请权限首先给自己的博客园设置,申请js权限,这个教程可以去搜。2.打开网页版网抑云音乐点击一首你喜欢的歌进入,然后点击生成外链播放器然后复制代码:进入到自己......
  • vue css 颜色背景进度条
     js赋值item.quoteScoreBackground=`linear-gradient(toright,#71d39d,#71d39d${pe......
  • vue组件通信方式有哪些?
    vue组件通信方式一、props(父向子传值----自定义属性)/$emit(子向父传值-----自定义事件)父组件通过props的方式向子组件传递数据,而通过$emit子组件可以向父组件通信......
  • 【Linux 管理】使用 adduser 添加用户并为用户授予 sudo 权限的最简便方法
    目录添加用户为用户赋予sudo权限删除用户参考资料本文基于Ubuntu22.04,若下面的方法行不通可以转到最下方资料使用useradd。添加用户使用adduser命令来添加用户,只......
  • MySQL5.7 添加用户、删除用户与授权
    mysql-uroot-prootMySQL5.7mysql.user表没有password字段改authentication_string;一.创建用户:命令:CREATEUSER'username'@'host'IDENTIFIEDBY'password';例子:C......