搬运 蛙蛙 大佬的文章(做了写自己的补充) 文章链接:https://segmentfault.com/a/1190000022055867,怕以后找不到了
一:创建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 }
//页面大小变化之后,改变水印div的大小 (解决用户改变页面大小之后,水印覆盖不全的情况)
window.addEventListener('resize', function () {
const id = '1.23452384164.123412415'
if (document.getElementById(id) !== null) {
const div = document.getElementById(id)
div.style.width = document.documentElement.clientWidth + 'px'
div.style.height = document.documentElement.clientHeight + 'px'
}
});
// 添加水印方法 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)) } }
二:vue项目中直接引用
import { removeWatermark, setWaterMark } from '@/common/watermark.js' mounted() { setWaterMark('写代码的马小跳', '2023-08-23'); }, destroyed() { removeWatermark(); },
三:效果如图: