前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用js实现html页面水印

用js实现html页面水印

原创
作者头像
用户8703799
发布2023-04-10 19:24:53
4.3K0
发布2023-04-10 19:24:53
举报
文章被收录于专栏:javascript技术

用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 属性的作用,截图时就无法完整地复制水印文本,从而达到防截图的效果。

效果:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档