web前端如何实现水印
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章主要介绍"web前端如何实现水印",在日常操作中,相信很多人在web前端如何实现水印问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"web前端如何实现水印"的疑惑
千家信息网最后更新 2025年11月12日web前端如何实现水印
这篇文章主要介绍"web前端如何实现水印",在日常操作中,相信很多人在web前端如何实现水印问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"web前端如何实现水印"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
前言
前端实现的水印基本都是不安全的,可被破解的~.~
水印
水印(watermark)是一种容易识别、被夹于纸内,能够透过光线穿过从而显现出各种不同阴影的技术。
实现
先创建一个 wrap 块,并给其设置一些样式:
1. DIV绝对定位
通过图层叠加的方式将水印追加到 wrap 上,我们先看一下最终效果
动态获取到 wrap 的长宽并计算其能放几个水印块,并相应的设置每一个水印块的偏移值 left,top即可:
const wrap = document.querySelector('.wrap1');const { clientWidth, clientHeight } = wrap;const waterHeight = 100;const waterWidth = 180;// 能放下几行几列const [columns, rows] = [Math.ceil(clientWidth / waterWidth), Math.ceil(clientHeight / waterHeight)]for (let i = 0; i < columns; i++) { for (let j = 0; j <= rows; j++) { // 生成水印块 const watcerMarkElement = createWaterMarkElement(); // 动态设置偏移值 addAttributes(watcerMarkElement, { width: `${waterWidth}px` , height: `${waterHeight}px` , left: `${waterWidth + (i - 1) * waterWidth + 10}px` , top: `${waterHeight + (j - 1) * waterHeight + 10}px` , }); wrap.appendChild(watcerMarkElement) }}2. canvas+背景图
我们知道,可以给 div 设置样式 background,我们可以很轻松的实现背景图片,那么水印也可以通过这种方式来实现,其中背景图片通过 canvas 画出来,并且通过 toDataURL() 将图片转为 dataURL(base64),最后追加到 background-image 样式中。
const wrap = document. querySelector('. wrap2'); wrap.style.backgroundImage = `url(${drawWaterMark()})` ;drawWaterMark 方法实现如下 :
const drawWaterMark = (text = '小豪看世界') => { const sin = Math.sin(Math.PI / 4.5); const cos = Math.cos(Math.PI / 4.5); const canvas = document.createElement('canvas') canvas.width = 200; canvas.height = 100; const ctx = canvas.getContext('2d'); ctx.transform(cos, -sin, sin, cos, 0, 0); ctx.font = '16px'; ctx.fillStyle = 'rgba(0,0,0,.4)'; ctx.fillText(text, 80, 140); ctx.fillText(text, -30, 100); return canvas.toDataURL('image/png')};我们可以看到 wrap 插入了一个 base64的图片,强迫症的童鞋可以处理一下,将它转为 style 标签插入到body中;
改为 style 标签插入:
const style = document. createElement('style'); style.type = 'text/css'; style[xss_clean] = ` .wrap2 { background-image: url(${drawWaterMark()}); }`; document.body.appendChild(style);到此,关于"web前端如何实现水印"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
水印
前端
图片
学习
样式
背景
动态
方式
方法
更多
标签
背景图片
偏移
帮助
不同
实用
安全
接下来
光线
前言
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
苏州科技城互联网企业有哪些
河北量化积分管理软件开发软件
西安软件开发去哪些大学
知名专业软件开发服务
东华大学公共数据库
常州多功能软件开发代理商
网络安全高级工程师工信部
详细的网络技术
结构化方法软件开发的应用实例
怎么搭建底层数据库
共享服务器密码
人人商城 全套数据库字典
文件管理服务器启动异常 tcl
绑定是指将数据库与VB
东南网络安全考研真题
信息网络安全专业介绍
互联网科技公司服务行业
绍兴桌面软件开发计划
vb入让多个数据库建立联系
网络安全法共有多少万字
网络安全高级工程师工信部
网络安全的技术对策中
2008代理服务器
猪八戒软件开发费率提升
手动设置ipad的dns服务器
服务器 降温
广电网络技术就业前景
网络安全 竞赛
固原网络技术哪家强
数据库事务吃内存大么