首页 > 其他分享 >JS添加文字水印

JS添加文字水印

时间:2023-07-04 15:01:29浏览次数:31  
标签:style container 水印 JS 添加 str const div id

'use strict'

const watermark = {}

/**
*

  • @param {要设置的水印的内容} str
  • @param {需要设置水印的容器} container
    */
    const setWatermark = (str, container) => {
    const id = '1.23452384164.123412415'

if (container === undefined) {
return
}

// 查看页面上有没有,如果有则删除
if (document.getElementById(id) !== null) {
const childelement = document.getElementById(id)
childelement.parentNode.removeChild(childelement)
}

var containerWidth = container.offsetWidth // 获取父容器宽
var containerHeight = container.offsetHeight // 获取父容器高
container.style.position = 'relative' // 设置布局为相对布局

// 创建canvas元素(先制作一块背景图)
const can = document.createElement('canvas')
can.width = 390 // 设置每一块的宽度
can.height = 200 // 高度
const cans = can.getContext('2d') // 获取canvas画布
cans.rotate(-20 * Math.PI / 180) // 逆时针旋转π/9 cans.font = '20px Vedana' // 设置字体
cans.fillStyle = 'rgba(200, 200, 200, 0.20)' // 设置字体的颜色
cans.textAlign = 'left' // 文本对齐方式
cans.textBaseline = 'Middle' // 文本基线
cans.fillText(str, 0, 4 * can.height / 5) // 绘制文字

// 创建一个div元素
const div = document.createElement('div')
div.id = id // 设置id
div.style.pointerEvents = 'none' // 取消所有事件
div.style.top = '0px'
div.style.left = '0px'
div.style.position = 'absolute'
div.style.zIndex = '100000'
div.style.width = containerWidth + 'px'
div.style.height = containerHeight + 'px'
div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat'
container.appendChild(div) // 追加到页面

return id
}

// 该方法只允许调用一次
watermark.set = (str, container) => {
let id = setWatermark(str, container)
setInterval(() => {
if (document.getElementById(id) === null) {
id = setWatermark(str, container)
}
}, 500)
// 监听页面大小的变化
window.onresize = () => {
setWatermark(str, container)
}
}

export default watermark

标签:style,container,水印,JS,添加,str,const,div,id
From: https://www.cnblogs.com/zhen-jiao-ren-tou-da/p/17525777.html

相关文章

  • js代码加密,保护js文件刻不容缓
    随着互联网的高速发展,网站运行的javaSCRIPT代码常常被别人轻易的拷贝,因此程序员不得不对想办法保护自的代码---javascript加密。现在网络上面有太多的拿来主义,当然这也是没有办法避免的一种现象,网络的开放性使得一切都没有什么秘密可言,所以代码加密便顺应而产生。js代码加密,保护......
  • 直播源码开发,js 数据的创建时间是否大于30天或相隔天数
    直播源码开发,js数据的创建时间是否大于30天或相隔天数//获取当前时间varday=newDate();//数据库的数据创建时间vartime=creationTime;//把当前时间数据库时间转换成毫秒数varstarDate=Date.parse(time);varendDate=Date.parse(day);//当前时间毫秒数减去创建时间......
  • vscode打开settings.json方法
    cmd+shift+p,输入settingOpenWorkspaceSettings也会打开UI设置界面;OpenUserSettings(JSON)会打开用户设置settings.json文件;OpenWorkspaceSettings(JSON)会打开工作区设置settings.json文件vscode存在两种设置settings.json的方式UserSettings用户设置:......
  • JS逆向实战20——某头条jsvm逆向
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!网站目标网站:aHR0cHM6Ly93d3cudG91dGlhby5jb20v数据接口:aHR0cHM6Ly93d3cudG91dGlhby5jb20vYXBpL3BjL2xp......
  • unity前后端通信 json解析 HTTP POST(BestHttp插件实现)
    1.配置请求体中的Json字符串1request_data=newRequestBodyClass();2request_data.a="Json第一个字段";3request_data.b="Json第二个字段";4stringbody=JsonUtility.ToJson(request_data);2.实例化HTTPRequest,请求头方法设置为POST,并且设置请求头中类型为json......
  • 实战项目:构建基于Spring Boot和Vue.js的金融项目分享
    学习SpringBoot和Vue.js结合的前后端分离项目可以按照以下步骤进行:掌握SpringBoot:学习SpringBoot的基本概念和核心特性,如自动配置、起步依赖、注解驱动等。了解Spring框架的基本知识,如IoC容器、AOP、MVC模式等。学习Vue.js:学习Vue.js的基本语法、指令和组件,理解Vue实例、数据绑......
  • 认识soui4js(第4篇):定义一个窗口类并显示
    soui4js基于soui4设计实现。首先我们看一下soui4中如何定义一个窗口类。soui4最基本的窗口类是SHostWnd和SHostDialog,它需要一个布局xml。假定布局xml在资源包中的位置为:layout:maindlg。那么soui4中定义一个窗口可以是下面的代码(为了演示方便,这里使用SHostDialog):SHostDia......
  • idea配置vue.js启动vue项目
    最近老师给力一个项目比赛,那个是前后端分离的。我之前了解过一些,我也配置过idea的vue.js,但是好久不用忘了。所以重新找回了一下:  ......
  • js的中的函数(一)
    函数的定义函数本质上是自变量和因变量之间关系的一种抽象描述,在JavaScript中我们这样定义一个函数:functionadd(a,b){returna+b;}上述add函数的定义如下:function指出这是一个函数定义;add是函数的名称;(a,b)括号内列出函数的参数,多个参数以,分隔;{...}之......
  • Three.js教程:网格模型
    推荐:将NSDT场景编辑器加到你的3D工具链工具集:NSDT简石数字孪生网格模型(三角形概念)本节课给大家演示网格模型Mesh渲染自定义几何体BufferGeometry的顶点坐标,通过这样一个例子帮助大家建立**三角形(面)**的概念三角形(面)网格模型Mesh其实就一个一个三角形(面)拼接构成。使......