首页 > 其他分享 >vue项目中添加全页水印

vue项目中添加全页水印

时间:2023-10-18 14:35:41浏览次数:23  
标签:style vue 水印 全页 cans div document id

先看代码

 1 /**  水印添加方法  */
 2 
 3 let setWatermark = (str1, str2) => {
 4     let id = '1.23452384164.123412415'
 5 
 6     if (document.getElementById(id) !== null) {
 7         document.body.removeChild(document.getElementById(id))
 8     }
 9 
10     let can = document.createElement('canvas')
11     // 设置canvas画布大小
12     can.width = 150
13     can.height = 80
14 
15     let cans = can.getContext('2d')
16     cans.rotate(-20 * Math.PI / 180) // 水印旋转角度
17     cans.font = '15px Vedana'
18     cans.fillStyle = '#666666'
19     cans.textAlign = 'center'
20     cans.textBaseline = 'Middle'
21     cans.fillText(str1, can.width / 2, can.height) // 水印在画布的位置x,y轴
22     cans.fillText(str2, can.width / 2, can.height + 22)
23 
24     let div = document.createElement('div')
25     div.id = id
26     div.style.pointerEvents = 'none'
27     div.style.top = '40px'
28     div.style.left = '0px'
29     div.style.opacity = '0.08'
30     div.style.position = 'fixed'
31     div.style.zIndex = '100000'
32     div.style.width = document.documentElement.clientWidth + 'px'
33     div.style.height = document.documentElement.clientHeight + 'px'
34     div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat'
35     document.body.appendChild(div)
36     return id
37 }
38 
39 // 添加水印方法
40 export const setWaterMark = (str1, str2) => {
41     let id = setWatermark(str1, str2)
42     if (document.getElementById(id) === null) {
43         id = setWatermark(str1, str2)
44     }
45 }
46 
47 // 移除水印方法
48 export const removeWatermark = () => {
49     let id = '1.23452384164.123412415'
50     if (document.getElementById(id) !== null) {
51         document.body.removeChild(document.getElementById(id))
52     }
53 }

思路,在新增水印的时候,我们需要创建一个canvans画布,

在代码10行,可以看到创建了一个canvans对象并且设置画布大小,

后续将canvans对象设置为 '2d' 旋转角度以及画布内的文字格式、文字颜色、文字大小等并通过fillText属性来设置水印内容在画布的位置。

创建div对象,将画布与div绑定,并设置他的大小,层级以及定位位置等信息。

暴露出添加水印方法,并设置参数。

随后在App.vue中添加水印,调用添加水印方法,并传入第一行第二行的数据。

 

标签:style,vue,水印,全页,cans,div,document,id
From: https://www.cnblogs.com/shengjiangMock/p/17772242.html

相关文章

  • 999 vue 小结
    一、组件之间的数据传输传递带有返回值的js值(1)props:既可以实现父传子,也可以实现子传父(不常用应该)(2)自定义事件,也叫组件传递事件,$emit()实现子传父传递template中的HTML内容:slot插槽......
  • Vue3 element-plus el-cascader后缀图标更改(svg)
    概述今天用element-plus写通用表单的时候,发现了它的el-cascader组件竟然不支持改后缀图标,主要它的普通下拉el-select组件都能随便改suffix-icon,级联的下拉就不支持了,令人疑惑。    然后,找了好多办法,包括直接取原生的Component改它的arrowDown属性,发现也不支持了。没......
  • SvgIcon全局组件---开发环境:vue3+vuecli5
    开发背景nodev18.17.0(node-v)npmv8.4.1(npm-v)@vue/cli5.0.8(vue-V)0.SvgIcon全局组件全局组件是指在应用程序的任何位置使用的组件,使用全局组件前需要在Vus.js实例中注册,并将其挂载到实例中。全局组件是可复用的Vus.js实例。1.安装依赖svg-sprite-loadernpm......
  • vue3中监听滚动条事件
    import{onMounted,onUnmounted,reactive}from'vue'constdata=reactive({oldScrollTop:0,});constscrolling=()=>{//滚动条距文档顶部的距离letscrollTop=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop......
  • antd for vue3 table 使用rowClassName设置样式固定列不生效
    依赖库版本:Vue3+antdforvuev3.X样式问题:固定列背景色不生效,鼠标移入对应行背景色变为初始的白色columns:[{title:'装置',width:100,dataIndex:'areaName',fixed:'left'},...{title:'装置',w......
  • Vue项目中使用Tinymce,解决图片上传/粘贴
    前言最近因为公司项目的后台管理端需要实现编辑器功能,一方面满足编辑各类文章内容需求,另一方面要自己编辑一些课程相关的介绍,于是就花了一些时间对比体验现有的一些开源的编辑器。编辑器之间的简单比较UEditor:基本满足各种需求,依赖于jquery但是已经不再维护了,实现......
  • vue打包生产环境样式丢失解决
    一、概述把自己打包的vue小案例打包,然后发布到生产环境。发布到生产环境访问后发现样式丢失。(ps:测试环境正常的)二、解决办法找到项目中的vue.config.js把extract的值改为falsemodule.exports={css:{extract:false,loaderOptions:{stylus:......
  • Vue3.2中setup语法糖的使用教程分享
    这篇文章主要为大家详细介绍了Vue3.2中setup语法糖的具体使用方法,文中的示例代码讲解详细,对我们深入了解Vue有一定的帮助,需要的可以参考一下目录2、data数据的使用3、method方法的使用4、watchEffect的使用5、watch的使用6、computed计算属性的使用7、props父子传值的使用8、emit......
  • vue中同步方法的实现
    这篇文章主要介绍了vue中同步方法的实现,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教目录vue同步方法实现有三种实现方式vue中的同步和异步问题同步异步总结vue同步方法实现有三种实现方式1、axios本身属于Promise利用函数式的then获取请求返回结......
  • vue2使用 tinymce富文本编辑器-图片上传、粘贴图片上传致服务器
    1.安装tinymce富文本编辑器插件npmitinymcenpmi@tinymce/tinymce-vue2.创建Editor.js文件封装组件以便使用<template><divclass="tinymce-editor"><editorv-model="myValue":init="init":disabled="disabled&qu......