vue设置水印

news2024/9/23 5:17:47

水印图例

1.新建Watermark.js 文件

const watermark = {}

const setWatermark = (text, sourceBody) => {
  const id =
    Math.random() * 10000 +
    '-' +
    Math.random() * 10000 +
    '/' +
    Math.random() * 10000

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

  const can = document.createElement('canvas')
  can.width = 200 // 设置水印之间的左右间距
  can.height = 150 // 设置水印之间的上下间距

  const cans = can.getContext('2d')
  cans.rotate((-20 * Math.PI) / 180)
  cans.font = '15px Vedana'
  cans.fillStyle = 'rgba(0, 0, 0, .3)'  //水印颜色
  cans.textAlign = 'left'
  cans.textBaseline = 'Middle'
  cans.fillText(text, can.width / 20, can.height)

  const wateDiv = document.createElement('div')
  wateDiv.id = id
  wateDiv.className = 'watermarkClass'
  wateDiv.style.pointerEvents = 'none'
  wateDiv.style.background =
    'url(' + can.toDataURL('image/png') + ') left top repeat'
  if (sourceBody) {
    wateDiv.style.width = '100%'
    wateDiv.style.height = '100%'
    sourceBody.appendChild(wateDiv)
  } else {
    wateDiv.style.top = '3px'
    wateDiv.style.left = '0px'
    wateDiv.style.position = 'fixed'
    wateDiv.style.zIndex = '100000'
    wateDiv.style.width = document.documentElement.clientWidth + 'px'
    wateDiv.style.height = document.documentElement.clientHeight + 'px'
    document.body.appendChild(wateDiv)
  }

  return id
}

/**
 *  该方法只允许调用一次
 *  @param:
 *  @text == 水印内容
 *  @sourceBody == 水印添加的位置,不传就是body
 * */
watermark.set = (text, sourceBody) => {
  const domArr = Array.from(document.getElementsByClassName('watermarkClass'))
  for (let i = 0; i < domArr.length; i++) {
    const element = domArr[i]
    // element.parentNode.removeChild(element);
    element.remove()
  }
  if (text === '') {
    return
  }
  setWatermark(text, sourceBody)
  // let id = setWatermark(text, sourceBody);
  // setInterval(() => {
  //   if (document.getElementById(id) === null) {
  //     id = setWatermark(text, sourceBody);
  //   }
  // }, 2000);
  // window.onresize = () => {
  //   setWatermark(text, sourceBody);
  // };
}

export default watermark

2. 在vue 文件使用

<script>
import Watermark from './Watermark'  //引入水印文件
export default {
  name: 'app',
  mounted () {
    Watermark.set(水印名称)// 添加水印名称
  }
}
</script>

<style>

</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2085977.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云服务器开放端口的完整版图文教程

原文&#xff1a;阿里云服务器开放端口完整版教程&#xff1a;https://www.yundashi168.com/488.html 笔者近期开发完成的服务端程序部署在阿里云的ECS云服务器上面&#xff0c;一些应用程序配置文件需要设置监听的端口&#xff08;如Tomcat的8080、443端口等&#xff09;&…

萤石云 移动端demo指南

再来一篇&#xff0c;这次是萤石开放平台移动端demo的使用指南 一、Demo使用指南 从官网下载demo&#xff0c;下载地址demo首页如下&#xff1a; 填入对应参数 输入框是否必填解释服务器区域是国内选择Asia-China&#xff0c;海外选择对应的区域。选择后ApiUrl和WebUrl会自动…

餐饮行业eHR人力资源管理系统应该如何选择?

数字化转型与增长成为餐饮企业品牌竞争的创新壁垒&#xff0c;越来越多的餐饮企业&#xff08;门店&#xff09;依托数字化工具和手段&#xff0c;覆盖从内部组织到外部的数字化升级&#xff0c;包括员工管理、营销、客户管理&#xff0c;以及采购供应链等各环节的数字化运营。…

Netty从入门到超神-NIO 三大核心(selector,channel,buffer)(二)

前言 上一篇文章认识了一下Java的三大IO&#xff0c;这一章节我们详细了解一下NIO的工作原理以及三大核心Selector,Channel,Buffer并尝试来做一些小案例。 Java NIO 模型 Java NIO有三个核心的组件&#xff1a; selector 选择器 &#xff0c; channel 通道 &#xff0c; buf…

SpringBoot日常:Spring之@PostConstruct解析

简介 spring的Bean在创建的时候会进行初始化&#xff0c;而初始化过程会解析出PostConstruct注解的方法&#xff0c;并反射调用该方法。 PostConstruct 的使用和特点 只有一个非静态方法能使用此注解&#xff1b;被注解的方法不得有任何参数&#xff1b;被注解的方法返回值必…

Marin说PCB之TP测试的Layout设计要求

提及到TP点这个器件想必诸位道友们肯定不会陌生吧&#xff0c;我们的单板在量产之前都是需要做很多测试的&#xff0c;一般在产品研发的A版本和B版本的时候都是需要在单板上加上这个器件的。小编我最近在做一个改板&#xff0c;项目组为了降本增效&#xff0c;把单板的尺寸缩小…

Git 忽略已经提交的文件

对于未提交过的文件直接用ignore文件即可,不再赘述 对于已经提交过的文件,但是实际上不需要的,可以用git rm --cached命令 比如下图这个 .vsconfig被我误提交了或者忘了在ignore里添加了 但是我实际上不想要这个文件,那么在项目根目录打开git bash ,输入 git rm --cached .vsc…

LMDeploy 量化部署

创建环境和模型 conda create -n lmdeploy python3.10 -y conda activate lmdeploy conda install pytorch2.1.2 torchvision0.16.2 torchaudio2.1.2 pytorch-cuda12.1 -c pytorch -c nvidia -y pip install timm1.0.8 openai1.40.3 lmdeploy[all]0.5.3 mkdir /root/models …

[海思3403] 初始配置

虚拟机和板卡桥接 首先将虚拟机设置为桥接模式 板卡用网线和PC机连接&#xff0c;PC机用VMware打开Ubuntu虚拟机 点击虚拟网络编辑器&#xff0c;点击更改设置

爬取数据时,如何避免违法问题

目录 如何判断一个网站是否有明确禁止爬取数据&#xff1f; 如何处理爬取到的个人隐私数据以符合数据保护法规&#xff1f; 在爬取数据时&#xff0c;如何避免给目标网站带来过多的流量压力&#xff1f; 思维导图 在爬取数据时&#xff0c;避免违法问题的关键在于确保遵守相…

智慧工地:物联网技术和传感器技术的应用

随着科技的不断发展&#xff0c;物联网技术在各个领域得到了广泛的应用。在建筑行业中&#xff0c;智慧工地系统中物联网应用正逐渐成为一种趋势。本文将深入探讨智慧工地系统中物联网和传感器技术应用的内容。 物联网&#xff08;IoT&#xff09;和传感器技术在智慧工地中扮演…

养宠家庭除浮毛必入!希喂、安德迈、有哈宠物空气净化器真实对比

养过猫咪的铲屎官应该都体验过被换毛季支配的恐惧吧&#xff0c;夏天布偶的掉毛量已经全新升级了&#xff01;不仅是物体表面&#xff0c;连空气中都夹杂着浮毛&#xff0c;早上起来鼻子里偶尔都能发现它们的身影。长期生活在这样的环境中&#xff0c;肯定会对身体健康造成损害…

Spring数据访问层管理 ▎集成MyBatis ▎AOP ▎事务管理 ▎SpringWeb配置

前言: 在现代软件开发中&#xff0c;数据访问层的管理至关重要。Spring框架凭借其模块化结构和易用性&#xff0c;成为Java EE开发的首选。本文将探讨Spring在数据访问层的管理、MyBatis的集成、面向切面编程&#xff08;AOP&#xff09;、事务管理和Spring Web配置。 数据访…

【Material-UI】Select组件中的Native Select与TextField详解

文章目录 一、Select 组件概述1. 组件介绍2. Native Select 与 TextField 的区别 二、Native Select 组件详解1. 何为 Native Select2. Native Select 的基本用法3. Native Select 的优势与适用场景4. 自定义 Native Select 的样式 三、TextField 与 Select 的结合使用1. TextF…

BMS(三)

BAT (Pin 1): 连接到电池组的最高电压端&#xff08;CELL5&#xff09;。芯片通过该引脚监控整个电池组的总电压。 VC5 (Pin 2): 连接到第五节电池的正极&#xff0c;用于监控第五节电池的电压。 VC4 (Pin 3): 连接到第四节电池的正极&#xff0c;用于监控第四节电池的电压。 V…

【Datawhale X 李宏毅苹果书 AI夏令营】《深度学习详解》Task2 打卡

文章目录 前言学习目标一、线性模型二、分段线性曲线总结 前言 本文是【Datawhale X 李宏毅苹果书 AI夏令营】的Task2学习笔记打卡。 学习目标 李宏毅老师对应视频课程&#xff1a;https://www.bilibili.com/video/BV1JA411c7VT?p3 《深度学习详解》第一章主要介绍了深度学习…

Windows中Jupyter notebook设置默认目录

起因是我想白嫖实验室的显卡&#xff0c;就想在实验室电脑上安一个jupyter&#xff0c;就有了一系列问题 默认位置是这样的 方法一&#xff1a;配置文件 step1&#xff1a;生成jupyter配置文件 打开cmd&#xff0c;输入【jupyter notebook --generate-config】&#xff0c;输…

基于yolov8的行人跌倒检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的行人跌倒检测系统是利用先进的深度学习技术&#xff0c;特别是YOLOv8模型&#xff0c;来实现高效、准确的行人跌倒行为检测。YOLOv8作为YOLO系列的最新版本&#xff0c;通过改进的网络架构和训练策略&#xff0c;在保持高检测速度的同时&#xff0c;…

opencv实战项目十七:透射变换仪表表盘校正

文章目录 前言一、透射变换介绍&#xff1a;二、opencv实现2.1 cv2.getPerspectiveTransform()2.2 cv2.warpPerspective&#xff08;&#xff09; 三&#xff0c;代码实现&#xff1a;四&#xff0c;矫正效果&#xff1a; 前言 在这个信息化时代&#xff0c;图像处理技术在众多…

Python 利用rasterio库进行坐标转换

这是一篇必应上找的手册上的文章&#xff0c;特此记录 参考链接&#xff1a; 原文 参考链接2 影像中的RPC信息 目录 1、仿射变换矩阵转换2、使用控制点转换3、使用RPC进行坐标点转换 1、仿射变换矩阵转换 上面说的利用仿射转换矩阵进行转换&#xff0c;一些注意事项可以参考原文…