vue 给页面局部加水印和全部加水印

2023-11-16

局部加水印

在公共类js下,新建一个watermask.js,代码如下

export default {
    //tool.js
    addWaterMark() {
        const strArr = `${localStorage.getItem(
                "loginUserName"
            )}${localStorage
                .getItem("logunUserPhone")
                .slice(7, 11)}[${new Date()}]`;
        let ctx = document.createElement("canvas");
        ctx.width = 250;
        ctx.height = 100;
        ctx.style.display = "none";
        let cans = ctx.getContext("2d");
        cans.rotate((-20 * Math.PI) / 180);
        cans.font = "12px Microsoft YaHei";
        cans.fillStyle = "rgba(17, 17, 17, 0.20)";
        cans.textAlign = "left";
        cans.textBaseline = "Middle";
        cans.fillText(strArr, 0, 100);
        cans.save();
        return ctx.toDataURL();
    }
}

在需要的页面引入

<template>
//绑定样式
    <el-table :data="dataList" border :style="{backgroundImage:`url(${orgBackground})`}">
</template>

<script>
//引入js
import watermark from "@/tools/watermark";
export default {
    data() {
        return {
            orgBackground: "",
        };
    },
    mounted() {
        localStorage.setItem("loginUserName", "哈哈哈");
        localStorage.setItem("logunUserPhone", "123456");
        this.orgBackground = watermark.addWaterMark();
        
    },
};
</script>

<style lang='less' scoped>

</style>
</script>

页面全部加水印

同样在公共类js里新建一个watermark.js,代码如下

/**  水印添加方法  */
 
let setWatermark = (str1, str2) => {
  let id = '1.23452384164.123412415'
 
  if (document.getElementById(id) !== null) {
    document.body.removeChild(document.getElementById(id))
  }
 
  let can = document.createElement('canvas')
  // 设置canvas画布大小
  can.width = 150
  can.height = 80
 
  let cans = can.getContext('2d')
  cans.rotate(-20 * Math.PI / 180) // 水印旋转角度
  cans.font = '15px Vedana'
  cans.fillStyle = '#666666'
  cans.textAlign = 'center'
  cans.textBaseline = 'Middle'
  cans.fillText(str1, can.width / 2, can.height) // 水印在画布的位置x,y轴
  cans.fillText(str2, can.width / 2, can.height + 22)
 
  let div = document.createElement('div')
  div.id = id
  div.style.pointerEvents = 'none'
  div.style.top = '40px'
  div.style.left = '0px'
  div.style.opacity = '0.15'
  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
}
 
// 添加水印方法
export const setWaterMark = (str1, str2) => {
  let id = setWatermark(str1, str2)
  if (document.getElementById(id) === null) {
    id = setWatermark(str1, str2)
  }
}
 
// 移除水印方法
export const removeWatermark = () => {
  let id = '1.23452384164.123412415'
  if (document.getElementById(id) !== null) {
    document.body.removeChild(document.getElementById(id))
  }
}

然后在页面中引入

import { removeWatermark, setWaterMark } from '@/common/watermark'
mounted() {
    setWaterMark('hahaha', '哈哈哈');
},
destroyed() {
    removeWatermark();
},

以上两种方式均已尝试,可以使用,具体选那种方式根据项目需求

转载链接:局部加水印,https://blog.csdn.net/qq_44775782/article/details/107681734

单页面加水印:https://www.jqhtml.com/62620.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue 给页面局部加水印和全部加水印 的相关文章

随机推荐

  • 求助帖!Robotframework导入selenium2library库后缺少一些关键字,怎么解决

    求助帖 Robotframework导入selenium2library库后缺少一些关键字 怎么解决 找不到Open Browser等一般关键字 安装的版本如下 但是我的site packages中的文件都正常 可就是找不到某些关键字 求助
  • 计算机学感悟,计算机学习感悟

    篇一 计算机学习感悟 浅谈学习 计算机应用基础 的收获与感悟 随着信息技术的快速发展 计算机已成为人们在经济生活 社会 交往和日常生活中不可缺少的工具 是否具有使用计算机的基本技 能 已成为衡量一个人文化素质高低的重要标志之一 上高中的时候
  • 目标检测params,flops计算

    目标检测params flops计算 参数数量用params表示 关系到模型大小 单位通常为M 通常参数用float32表示 所以模型大小是参数数量的4倍 理论计算量用FLOPs或者M Adds表示 这里用FLOPs写起来简单 关系到算法速
  • Java之异常Throwable

    异常Throwable 自定义异常案例 package com week03 Day01 总结 异常 Throwable Error Exception CheckException RuntimeException 编译时异常 1 直接抛
  • mqtt 变为乱码 接受16进制字节流_常见乱码问题分析和总结

    背景概述 在我们的日常工作生活中一定碰到过下面的情况 场景1 安装完某个软件后 看到的安装程序变成类似这样的一组字符 图1所示的样子 图 1 安装程序中的乱码 场景2 打开一个文档发现里面的内容全面是问号 如图2所示 图 2 带有问号的乱码
  • Redis类型之Geospatial

    1 简介 Redis 3 2 中增加了对GEO类型的支持 GEO Geographic 地理信息的缩写 该类型 就是元素的2维坐标 在地图上就是经纬度 redis基于该类型 提供了经纬度设置 查询 范围查询 距离查询 经纬度Hash等常见操
  • locate函数

    include
  • 如何从远程服务器复制文件,远程服务器文件如何复制到本地

    远程服务器文件如何复制到本地 内容精选 换一换 本节为您介绍如何在本机使用远程登录工具MSTSC登录Windows裸金属服务器 裸金属服务器状态必须为 运行中 如果Windows裸金属服务器采用密钥方式鉴权 需要先获取裸金属服务器的密码 获
  • 3D游戏编程与设计作业——游戏智能

    一 作业要求 坦克对战游戏AI设计 从商店下载游戏 Kawaii Tank 或 其他坦克模型 构建AI对战坦克 具体要求 使用 感知 思考 行为 模型 建模 AI 坦克 场景中要放置一些障碍阻挡对手视线 坦克要放置一个矩阵包围盒触发器 保证
  • 如何解决Exception in thread “main” java.sql.SQLException: Statement.executeUpdate() or Statement.execute

    场景 黑马程序员javaweb基础教程 视频jdbc快速入门时出现的报错 问题描述 Exception in thread main java sql SQLException Statement executeUpdate or Stat
  • late_initcall和module_init

    late initcall和module init 分类 linux驱动程序设计 2012 11 04 15 14 3680人阅读 评论 0 收藏 举报 所有的 init函数在区段 initcall init中还保存了一份函数指针 在初始化
  • unittest+ddt自动化测试相关知识点

    unittest是Python单元测试框架 主要分为 测试用例TestCase 一个完整的测试流程 测试套件TestSuite 多个测试用例集合在一起 执行 结果呈现TextTestRunner 用例运行和结果呈现 结果呈现常用HtmlTe
  • 环境配置tips

    一 MySQL在Linux下数据库名 表名 列名 别名大小写规则是这样的 1 数据库名与表名是严格区分大小写的 2 表的别名是严格区分大小写的 3 列名与列的别名在所有的情况下均是忽略大小写的 4 变量名也是严格区分大小写的 修改不区分大小
  • OpenWrt系统无法进入Luci解决办法之一

    当在OpenWrt系统重启后 打开Luci后台时有时可能会遇到以下错误报告 usr lib lua luci dispatcher lua 577 bad argument 1 to pairs table expected got nil
  • cocos2d-x 4.0 版本修改点

    转自 https discuss cocos2d x org t cocos2d x v4 0 released 48487 Features support metal on iOS macOS use CMake for all pla
  • vue : 无法加载文件 \Node.js\node_global\vue.ps1。未对文件 \Node.js\node_global\vue.ps1 进行数字签名。无法在当前系统上运行该脚本。

    vue 无法加载文件 D Node js node global vue ps1 未对文件 D Node js node global vue ps1 进行数字签名 无法在当前系统上运行该脚本 最近在使用powershell下使用 vue
  • pandas的行列获取/pandas iloc和loc的使用/如何获取pandas的行和列

    Pandas行和列的获取 由于平时没有系统的学习pandas 导致在实际应用过程中 对于获取df中的行和列经常出现问题 于是总结一下 供自己以后参考 参考的书籍在线版链接 利用 Python 进行数据分析 第 2 版 0 查看手册 请当你看
  • 深度学习之基于VGG16与ResNet50实现鸟类识别

    鸟类识别在之前做过 但是效果特别差 而且ResNet50的效果直接差到爆炸 这次利用VGG16与ResNet50的官方模型进行鸟类识别 1 导入库 import tensorflow as tf import numpy as np imp
  • ubuntu安装/查看已安装包的方法

    自己折腾ubuntu安装包来着 发现一篇文章非常实用 将apt get和dpkg等命令的参数讲解非常全面 于是转载过来 中文的比英文的帮助看着还是顺手一点 原文链接 http www cnblogs com forward archive
  • vue 给页面局部加水印和全部加水印

    局部加水印 在公共类js下 新建一个watermask js 代码如下 export default tool js addWaterMark const strArr localStorage getItem loginUserName