网站首页 > 开源技术 正文
用js实现html页面水印
要在 HTML 页面中添加水印并防止截图,可以使用 JavaScript。以下是实现的基本步骤:
1、在 HTML 中添加一个 div 元素作为水印容器,并设置其样式。
2、使用 JavaScript 动态生成水印内容,并将其添加到水印容器中。
3、通过 CSS 设置水印文本的样式,例如颜色、字体大小等。
4、使用 CSS 将水印容器置于所有其他元素的最顶层,从而覆盖整个页面。
5、监听窗口的 resize 和 scroll 事件,以便及时更新水印位置。
6、使用 Canvas 绘制图片或者使用 CSS 的 mix-blend-mode 属性来实现防截图效果。
下面是一个示例代码片段:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Watermark Example</title>
<style>
#watermark {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 9999;
pointer-events: none;
}
#watermark span {
font-size: 24px;
color: #ccc;
position: absolute;
transform: rotate(-30deg);
padding:100px;
pointer-events: none;
}
</style>
</head>
<body>
<div id="watermark"></div>
<script>
function createWatermark() {
var watermark = document.getElementById('watermark');
var angle = -30;
var top = -30;
var text = 'My Watermark';
for (var i = 0; i < 10; i++) {
var span = document.createElement('span');
span.style.left = i * 200 + 'px';
span.style.top = i * top + 'px';
span.style.webkitTransform = 'rotate(' + angle + 'deg)';
span.style.MozTransform = 'rotate(' + angle + 'deg)';
span.style.msTransform = 'rotate(' + angle + 'deg)';
span.style.OTransform = 'rotate(' + angle + 'deg)';
span.style.transform = 'rotate(' + angle + 'deg)';
span.appendChild(document.createTextNode(text));
watermark.appendChild(span);
angle += 15;
top += 15;
}
}
createWatermark();
window.addEventListener('resize', function() {
createWatermark();
});
window.addEventListener('scroll', function() {
createWatermark();
});
// 防截图
var canvas = document.createElement('canvas');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
canvas.style.position = 'fixed';
canvas.style.top = 0;
canvas.style.left = 0;
canvas.style.pointerEvents = 'none';
canvas.style.mixBlendMode = 'multiply';
document.body.appendChild(canvas);
var ctx = canvas.getContext('2d');
ctx.fillRect(0, 0, canvas.width, canvas.height);
</script>
</body>
</html>
这个示例代码添加了一个水印容器,并在其中添加了一些旋转的文本。使用 CSS 将水印容器置于最顶层,并禁用了其指针事件,以防止干扰用户操作。同时在窗口 resize 和 scroll 事件中更新水印位置,以适应页面变化。
如果想保护上面的JavaScript代码逻辑,可以用JShaman进行JavaScript代码混淆加密,加密后的代码不可读、可起到防分析的作用。
此外,这个示例代码还使用 Canvas 绘制了一个与页面大小相同的黑色矩形,并将其与水印容器叠加在一起。由于 mix-blend-mode 属性的作用,截图时就无法完整地复制水印文本,从而达到防截图的效果。
效果:
- 上一篇: GC-PowerStation使用教程
- 下一篇: 外媒说 | 看看外媒都是如何评价《芭比》这部电影的
猜你喜欢
- 2024-12-13 外媒说 | 看看外媒都是如何评价《芭比》这部电影的
- 2024-12-13 GC-PowerStation使用教程
- 2024-12-13 2023 年 CSS 新特性大盘点
- 2024-12-13 Canvas 从进阶到退学
- 2024-12-13 Qt4/5升级到Qt6吐血经验总结V202308
- 2024-12-13 肝一下Go.js的高级使用—动态显示效果......
- 2024-12-13 如何用FFMpeg生成视频
- 2024-12-13 如何在fabric.js中使用蒙版合成图片
- 2024-12-13 canvas画箭头线
- 2024-12-13 2023年最火的300个JS会议/演讲清单(国外)
你 发表评论:
欢迎- 05-16东契奇:DFS训练时喷了我很多垃圾话 我不懂他为什么比赛不这么干
- 05-16这两球很伤!詹姆斯空篮拉杆不中 DFS接里夫斯传球空接也没放进
- 05-16湖人自媒体调查:89%球迷希望DFS回归79%希望詹姆斯回归
- 05-16Shams:湖人得到全能球员DFS 节省了1500万奢侈税&薪金空间更灵活
- 05-16G5湖人胜率更高!詹姆斯不满判罚,DFS谈5人打满下半场:这很艰难
- 05-16DFS:当东契奇进入状态 所有防守者在他面前都像个圆锥桶
- 05-16上一场9中6!DFS:不能让纳兹-里德这样的球员那么轻松地投三分
- 05-16WIDER FACE评测结果出炉:滴滴人脸检测DFS算法获世界第一
- 最近发表
-
- 东契奇:DFS训练时喷了我很多垃圾话 我不懂他为什么比赛不这么干
- 这两球很伤!詹姆斯空篮拉杆不中 DFS接里夫斯传球空接也没放进
- 湖人自媒体调查:89%球迷希望DFS回归79%希望詹姆斯回归
- Shams:湖人得到全能球员DFS 节省了1500万奢侈税&薪金空间更灵活
- G5湖人胜率更高!詹姆斯不满判罚,DFS谈5人打满下半场:这很艰难
- DFS:当东契奇进入状态 所有防守者在他面前都像个圆锥桶
- 上一场9中6!DFS:不能让纳兹-里德这样的球员那么轻松地投三分
- WIDER FACE评测结果出炉:滴滴人脸检测DFS算法获世界第一
- 湖人自媒体调查:89%球迷希望DFS回归 79%希望詹姆斯回归
- 一觉醒来湖人苦盼的纯3D终于到位 DFS能带给紫金军多少帮助
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)