vue项目中添加全页水印
先看代码
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中添加水印,调用添加水印方法,并传入第一行第二行的数据。